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

Create your Perl module with custom functions. You can name your module as you want, for example 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

Declare module in handler server

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

FastCGI server (Nginx)

You've just to incicate to LLNG FastCGI server the file to read using either -f option or CUSTOM_FUNCTIONS_FILE environment variable. Using packages, you just have to modify your /etc/default/llng-fastcgi-server (or /etc/default/lemonldap-ng-fastcgi-server) file:

# Number of process (default: 7)
#NPROC = 7
 
# Unix socket to listen to
SOCKET=/var/run/llng-fastcgi-server/llng-fastcgi.sock
 
# Pid file
PID=/var/run/llng-fastcgi-server/llng-fastcgi-server.pid
 
# User and GROUP
USER=www-data
GROUP=www-data
 
# Custom functions file
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)