From 5af27967c621090a750727077d3d6ed86c079552 Mon Sep 17 00:00:00 2001 From: Xavier Guimard Date: Tue, 23 Apr 2019 14:16:31 +0200 Subject: [PATCH] Auto generate handler wrapper when possible (#1718) --- lemonldap-ng-handler/MANIFEST | 24 ------------------- .../lib/Lemonldap/NG/Handler/ApacheMP2.pm | 3 +-- .../NG/Handler/ApacheMP2/AuthBasic.pm | 13 ---------- .../lib/Lemonldap/NG/Handler/ApacheMP2/CDA.pm | 13 ---------- .../Lemonldap/NG/Handler/ApacheMP2/DevOps.pm | 13 ---------- .../Lemonldap/NG/Handler/ApacheMP2/OAuth2.pm | 13 ---------- .../NG/Handler/ApacheMP2/SecureToken.pm | 13 ---------- .../NG/Handler/ApacheMP2/ServiceToken.pm | 13 ---------- .../NG/Handler/ApacheMP2/ZimbraPreAuth.pm | 13 ---------- .../lib/Lemonldap/NG/Handler/Lib/PSGI.pm | 3 +-- .../lib/Lemonldap/NG/Handler/Main/Run.pm | 24 ++++++++++++++++++- .../Lemonldap/NG/Handler/PSGI/AuthBasic.pm | 13 ---------- .../lib/Lemonldap/NG/Handler/PSGI/CDA.pm | 13 ---------- .../Lemonldap/NG/Handler/PSGI/ServiceToken.pm | 13 ---------- .../Lemonldap/NG/Handler/Server/AuthBasic.pm | 13 ---------- .../lib/Lemonldap/NG/Handler/Server/CDA.pm | 13 ---------- .../lib/Lemonldap/NG/Handler/Server/DevOps.pm | 13 ---------- .../lib/Lemonldap/NG/Handler/Server/OAuth2.pm | 13 ---------- .../NG/Handler/Server/SecureToken.pm | 13 ---------- .../NG/Handler/Server/ServiceToken.pm | 13 ---------- .../NG/Handler/Server/ZimbraPreAuth.pm | 13 ---------- 21 files changed, 25 insertions(+), 250 deletions(-) delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/AuthBasic.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/CDA.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/DevOps.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/OAuth2.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/SecureToken.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/ServiceToken.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/ZimbraPreAuth.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/PSGI/AuthBasic.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/PSGI/CDA.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/PSGI/ServiceToken.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Server/AuthBasic.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Server/CDA.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Server/DevOps.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Server/OAuth2.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Server/SecureToken.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Server/ServiceToken.pm delete mode 100644 lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Server/ZimbraPreAuth.pm diff --git a/lemonldap-ng-handler/MANIFEST b/lemonldap-ng-handler/MANIFEST index 953607fc9..4aa529841 100644 --- a/lemonldap-ng-handler/MANIFEST +++ b/lemonldap-ng-handler/MANIFEST @@ -5,27 +5,13 @@ eg/scripts/purgeLocalCache eg/scripts/purgeLocalCache.cron.d lib/Lemonldap/NG/Handler.pm lib/Lemonldap/NG/Handler/ApacheMP2.pm -lib/Lemonldap/NG/Handler/ApacheMP2/AuthBasic.pm -lib/Lemonldap/NG/Handler/ApacheMP2/CDA.pm -lib/Lemonldap/NG/Handler/ApacheMP2/DevOps.pm lib/Lemonldap/NG/Handler/ApacheMP2/DevOpsST.pm lib/Lemonldap/NG/Handler/ApacheMP2/FCGIClient.pm lib/Lemonldap/NG/Handler/ApacheMP2/Main.pm lib/Lemonldap/NG/Handler/ApacheMP2/Menu.pm -lib/Lemonldap/NG/Handler/ApacheMP2/OAuth2.pm lib/Lemonldap/NG/Handler/ApacheMP2/Request.pm -lib/Lemonldap/NG/Handler/ApacheMP2/SecureToken.pm -lib/Lemonldap/NG/Handler/ApacheMP2/ServiceToken.pm -lib/Lemonldap/NG/Handler/ApacheMP2/ZimbraPreAuth.pm -lib/Lemonldap/NG/Handler/Lib/AuthBasic.pm -lib/Lemonldap/NG/Handler/Lib/CDA.pm -lib/Lemonldap/NG/Handler/Lib/DevOps.pm -lib/Lemonldap/NG/Handler/Lib/OAuth2.pm lib/Lemonldap/NG/Handler/Lib/PSGI.pm -lib/Lemonldap/NG/Handler/Lib/SecureToken.pm -lib/Lemonldap/NG/Handler/Lib/ServiceToken.pm lib/Lemonldap/NG/Handler/Lib/Status.pm -lib/Lemonldap/NG/Handler/Lib/ZimbraPreAuth.pm lib/Lemonldap/NG/Handler/Main.pm lib/Lemonldap/NG/Handler/Main/Init.pm lib/Lemonldap/NG/Handler/Main/Jail.pm @@ -33,23 +19,13 @@ lib/Lemonldap/NG/Handler/Main/Reload.pm lib/Lemonldap/NG/Handler/Main/Run.pm lib/Lemonldap/NG/Handler/Main/SharedVariables.pm lib/Lemonldap/NG/Handler/PSGI.pm -lib/Lemonldap/NG/Handler/PSGI/AuthBasic.pm -lib/Lemonldap/NG/Handler/PSGI/CDA.pm lib/Lemonldap/NG/Handler/PSGI/Main.pm lib/Lemonldap/NG/Handler/PSGI/Router.pm -lib/Lemonldap/NG/Handler/PSGI/ServiceToken.pm lib/Lemonldap/NG/Handler/PSGI/Try.pm lib/Lemonldap/NG/Handler/Server.pm -lib/Lemonldap/NG/Handler/Server/AuthBasic.pm -lib/Lemonldap/NG/Handler/Server/CDA.pm -lib/Lemonldap/NG/Handler/Server/DevOps.pm lib/Lemonldap/NG/Handler/Server/DevOpsST.pm lib/Lemonldap/NG/Handler/Server/Main.pm lib/Lemonldap/NG/Handler/Server/Nginx.pm -lib/Lemonldap/NG/Handler/Server/OAuth2.pm -lib/Lemonldap/NG/Handler/Server/SecureToken.pm -lib/Lemonldap/NG/Handler/Server/ServiceToken.pm -lib/Lemonldap/NG/Handler/Server/ZimbraPreAuth.pm lib/Plack/Middleware/Auth/LemonldapNG.pm Makefile.PL MANIFEST This list of files diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2.pm index 2db04607d..f36e73a1d 100644 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2.pm +++ b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2.pm @@ -41,8 +41,7 @@ sub launch { $type = $t; } my $class = "Lemonldap::NG::Handler::ApacheMP2::$type"; - eval "require $class"; - die $@ if ($@); + Lemonldap::NG::Handler::Apache2::Main->buildAndLoadType($class); my ($res) = $class->$sub($req); return $res; } diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/AuthBasic.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/AuthBasic.pm deleted file mode 100644 index b5202f3e6..000000000 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/AuthBasic.pm +++ /dev/null @@ -1,13 +0,0 @@ -# LLNG wrapper class to enable AuthBasic handler with Apache-2/ModPerl-2 -# -# See https://lemonldap-ng.org/documentation/latest/handlerarch -package Lemonldap::NG::Handler::ApacheMP2::AuthBasic; - -use strict; - -use base 'Lemonldap::NG::Handler::Lib::AuthBasic', - 'Lemonldap::NG::Handler::ApacheMP2::Main'; - -our $VERSION = '2.1.0'; - -1; diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/CDA.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/CDA.pm deleted file mode 100644 index 78597cd28..000000000 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/CDA.pm +++ /dev/null @@ -1,13 +0,0 @@ -# LLNG wrapper class to enable CDA handler with Apache-2/ModPerl-2 -# -# See https://lemonldap-ng.org/documentation/latest/handlerarch -package Lemonldap::NG::Handler::ApacheMP2::CDA; - -use strict; - -use base 'Lemonldap::NG::Handler::Lib::CDA', - 'Lemonldap::NG::Handler::ApacheMP2::Main'; - -our $VERSION = '2.1.0'; - -1; diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/DevOps.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/DevOps.pm deleted file mode 100644 index 557f2337b..000000000 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/DevOps.pm +++ /dev/null @@ -1,13 +0,0 @@ -# LLNG wrapper class to enable DevOps handler with Apache-2/ModPerl-2 -# -# See https://lemonldap-ng.org/documentation/latest/handlerarch -package Lemonldap::NG::Handler::ApacheMP2::DevOps; - -use strict; - -use base 'Lemonldap::NG::Handler::Lib::DevOps', - 'Lemonldap::NG::Handler::ApacheMP2::Main'; - -our $VERSION = '2.1.0'; - -1; diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/OAuth2.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/OAuth2.pm deleted file mode 100644 index c01a77218..000000000 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/OAuth2.pm +++ /dev/null @@ -1,13 +0,0 @@ -# LLNG wrapper class to enable OAuth2 handler with Apache-2/ModPerl-2 -# -# See https://lemonldap-ng.org/documentation/latest/handlerarch -package Lemonldap::NG::Handler::ApacheMP2::OAuth2; - -use strict; - -use base 'Lemonldap::NG::Handler::Lib::OAuth2', - 'Lemonldap::NG::Handler::ApacheMP2::Main'; - -our $VERSION = '2.0.4'; - -1; diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/SecureToken.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/SecureToken.pm deleted file mode 100644 index 82a840d1e..000000000 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/SecureToken.pm +++ /dev/null @@ -1,13 +0,0 @@ -# LLNG wrapper class to enable SecureToken handler with Apache-2/ModPerl-2 -# -# See https://lemonldap-ng.org/documentation/latest/handlerarch -package Lemonldap::NG::Handler::ApacheMP2::SecureToken; - -use strict; - -use base 'Lemonldap::NG::Handler::Lib::SecureToken', - 'Lemonldap::NG::Handler::ApacheMP2::Main'; - -our $VERSION = '2.1.0'; - -1; diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/ServiceToken.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/ServiceToken.pm deleted file mode 100644 index 4ba61ceed..000000000 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/ServiceToken.pm +++ /dev/null @@ -1,13 +0,0 @@ -# LLNG wrapper class to enable ServiceToken handler with Apache-2/ModPerl-2 -# -# See https://lemonldap-ng.org/documentation/latest/handlerarch -package Lemonldap::NG::Handler::ApacheMP2::ServiceToken; - -use strict; - -use base 'Lemonldap::NG::Handler::Lib::ServiceToken', - 'Lemonldap::NG::Handler::ApacheMP2::Main'; - -our $VERSION = '2.1.0'; - -1; diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/ZimbraPreAuth.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/ZimbraPreAuth.pm deleted file mode 100644 index d3513675d..000000000 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/ApacheMP2/ZimbraPreAuth.pm +++ /dev/null @@ -1,13 +0,0 @@ -# LLNG wrapper class to enable ZimbraPreAuth handler with Apache-2/ModPerl-2 -# -# See https://lemonldap-ng.org/documentation/latest/handlerarch -package Lemonldap::NG::Handler::ApacheMP2::ZimbraPreAuth; - -use strict; - -use base 'Lemonldap::NG::Handler::Lib::ZimbraPreAuth', - 'Lemonldap::NG::Handler::ApacheMP2::Main'; - -our $VERSION = '2.1.0'; - -1; diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Lib/PSGI.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Lib/PSGI.pm index 9098a5db6..054743b6c 100644 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Lib/PSGI.pm +++ b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Lib/PSGI.pm @@ -125,8 +125,7 @@ sub _authAndTrace { my $tmp = $self->api; $tmp =~ s/::\w+$/::/; $type = $tmp . $type; - eval "require $type"; - die $@ if ($@); + Lemonldap::NG::Handler::Main->buildAndLoadType($type); my ( $res, $session ) = $type->run( $req, $self->{rule} ); $self->portal( $type->tsv->{portal}->() ); $req->userData($session) if ($session); diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Run.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Run.pm index 3c2281ef4..84f12cc53 100644 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Run.pm +++ b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Run.pm @@ -446,7 +446,8 @@ sub retrieveSession { # 2. Get the session from cache or backend my $session = $req->data->{session} = ( - Lemonldap::NG::Common::Session->new( { + Lemonldap::NG::Common::Session->new( + { storageModule => $class->tsv->{sessionStorageModule}, storageModuleOptions => $class->tsv->{sessionStorageOptions}, cacheModule => $class->tsv->{sessionCacheModule}, @@ -748,6 +749,27 @@ sub localUnlog { } } +## @rmethod buildAndLoadType(string package) +# Try to load type or build it +sub buildAndLoadType { + my ( $class, $package ) = @_; + eval "require $package"; + if ($@) { + my $lastError = $@; + my $main = $package; + $main =~ s/::([^:]*)$/::Main/; + my $type = $2 or die "Malformed package $package"; + eval <