documentation:2.1:customhandlers

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

documentation:2.1:customhandlers [2019/01/15 15:55] (current)
Line 1: Line 1:
 +====== Custom handlers ======
 +
 +LLNG provides Perl libraries that can be easily used by inheritance. So you can write your own handlers but you need first to understand [[handlerarch|Handler architecture]]
 +
 +===== Add a new handler type =====
 +
 +  - Write your new Module (in Lemonldap/NG/Handler/Lib for example) that overload some Lemonldap::NG::Handler::Main methods
 +  - Write a wrapper in each platform directory //(see Lemonldap::NG::Handler::Apache2::AuthBasic or Lemonldap::NG::Handler::Server::AuthBasic for examples)//
 +
 +Wrapper usually look at this:
 +<file perl>
 +package Lemonldap::NG::Handler::ApacheMP2::MyType;
 +
 +use base 'Lemonldap::NG::Handler::ApacheMP2::Main', 'Lemonldap::NG::Handler::Lib::MyType';
 +
 +1;
 +</file>
 +
 +==== Enable it ====
 +
 +Your wrappers must be named "Lemonldap::NG::Handler::<platform>::<type>" where <platform> is the target (ApacheMP2 or Server) and <type> is the name you've chosen.
 +
 +You can enable it either:
 +  * by setting a ''PerlSetVar VHOSTTYPE <type>'' in the Apache configuration file
 +  * by setting a ''fastcgi_param VHOSTTYPE <type>'' in the Nginx configuration file
 +  * by adding it to the menu: add its name in ''vhostType'' "select" declaration (file ''lemonldap-ng-manager/lib/Lemonldap/NG/Build/Attributes'') and rebuild LLNG
 +
 +Note that configuration parameter can be set only in lemonldap-ng.ini configuration file //(section Handler)//.
 +
 +===== Add a new platform =====
 +
 +LLNG provides 3 platforms:
 +  * ApacheMP2
 +  * FastCGI server //(Nginx is build from there)//
 +  * Auto-protected PSGI
 +
 +If you want to add another, you must write:
 +  * the platform launcher file that launch the required type //(see ''lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2'' file for example)//
 +  * write the main platform file (''Lemonldap::NG::Handler::MyPlatform::Main'') that provides required method //(see ''lemonldap-ng-handler/lib/Lemonldap/NG/Handler/*/Main'' for examples)// and inherits from ''Lemonldap::NG::Handler::Main''
 +  * write the "type" wrapper files (AuthBasic,...).
 +
 +Wrapper usually look at this:
 +<file perl>
 +package Lemonldap::NG::Handler::MyPlatform::AuthBasic;
 +
 +use base 'Lemonldap::NG::Handler::MyPlatform::Main', 'Lemonldap::NG::Handler::Lib::AuthBasic';
 +
 +1;
 +</file>
 +
 +===== Old fashion Nginx handlers =====
 +
 +<note important>There is no need to use this feature now. It is kept for compatibility.</note>
 +
 +Three actions are needed:
 +  * declare your own module in the manager "General Parameters >> Advanced Parameters >> Custom handlers (Nginx)". Key is the name that will be used below and value is the name of the custom package,
 +  * in your Nginx configuration file, add ''LLTYPE=<name>;'' in the ''location = /lmauth {...}'' paragraph
 +  * restart FastCGI server(s) //(reload is not enough here)//