# Handler libraries architecture

Handlers are build on rows of modules:

- Applications or launchers that get the request and choose the right type (Main, AuthBasic, ZimbraPreAuth,...) and launch it (may not inherits from other Handler::* modules)
- Wrappers that call "type" library and platform "Main" (may all inherits from Platform::Main)
- library types if needed (may inherits from Main)
- Main: the main handler library

## Overview of Handler packages

Usage | Platform | Wrapper | Types | Main
--- | --- | --- | --- | ---
Applications | Launchers
Apache2 protection |  | ApacheMP2 | ApacheMP2::<type> | Lib::<type> | Main
Plack servers protection or Nginx/SSOaaS FastCGI/uWSGI server | Server | Server::<type>
Self protected applications | PSGI | PSGI::<type>

Types are:

- (Main): link between Main and platform
- AuthBasic
- CDA
- DevOps
- DevOps+ServiceToken
- OAuth2
- SecureToken (not available for PSGI)
- Service Token (server to server)
- ZimbraPreAuth (not available for PSGI)