Custom functions

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

Write custom functions library

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;
 
  # Your nice code here
 
  return $param;
}
 
1;
First parameter passed to the custom function is the requested URL, that is
  • portal full URL if custom function is run by portal (e.g. https://auth.example.com/)
  • absolute URL if it is run by handler (e.g. /admin/index.php?param=foo).

Import custom functions in LemonLDAP::NG

Declare module in handler server

Apache

Your module has to be loaded by Apache (for example after Handler load):

# 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

Declare custom functions

Go in Manager, General Parameters » Advanced Parameters » Custom functions and set:

SSOExtensions::function1
If your function is not compliant with Safe jail, you will need to disable the jail.

Use it

You can now use your function in a macro, an header or an access rule, for example:

Custom-Header => function1($uid)