2007-01-04 09:42:13 +01:00
|
|
|
|
package Lemonldap::NG::Manager::Help;
|
|
|
|
|
|
|
|
|
|
use AutoLoader qw(AUTOLOAD);
|
|
|
|
|
use UNIVERSAL qw(can);
|
2007-01-14 21:54:52 +01:00
|
|
|
|
our $VERSION = '0.3';
|
2007-01-04 09:42:13 +01:00
|
|
|
|
|
|
|
|
|
sub import {
|
|
|
|
|
my ($caller_package) = caller;
|
|
|
|
|
my $lang = shift;
|
|
|
|
|
$lang = lc($lang);
|
|
|
|
|
foreach ( split( /[,;]/, $lang ) ) {
|
|
|
|
|
next if /=/;
|
|
|
|
|
s/fr-fr/fr/;
|
|
|
|
|
s/en-us/en/;
|
|
|
|
|
if ( __PACKAGE__->can("help_groups_$_") ) {
|
|
|
|
|
$l = $_;
|
|
|
|
|
last;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$l ||= "en";
|
2007-01-14 21:54:52 +01:00
|
|
|
|
foreach $h (qw(virtualHosts groups ldap vars storage macros authParams
|
|
|
|
|
cookieName domain)) {
|
2007-01-04 09:42:13 +01:00
|
|
|
|
*{"${caller_package}::help_$h"} = \&{"help_${h}_$l"};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
1;
|
|
|
|
|
__END__
|
|
|
|
|
|
|
|
|
|
=pod
|
|
|
|
|
=cut
|
|
|
|
|
sub help_virtualHosts_en {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Virtual Hosts</h3>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
This help chapter does not exist in english. If you want to help us, you can
|
|
|
|
|
edit lib/Lemonldap/NG/Manager/Help.pm in lemonldap-ng source tree and send us
|
|
|
|
|
your contribution.<br>
|
|
|
|
|
Thanks.
|
2007-01-04 09:42:13 +01:00
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
2007-01-13 20:34:03 +01:00
|
|
|
|
sub help_macros_en {
|
|
|
|
|
print <<EOT;
|
2007-01-14 21:54:52 +01:00
|
|
|
|
<h3>Macros</h3>
|
|
|
|
|
This help chapter does not exist in english. If you want to help us, you can
|
|
|
|
|
edit lib/Lemonldap/NG/Manager/Help.pm in lemonldap-ng source tree and send us
|
|
|
|
|
your contribution.<br>
|
|
|
|
|
Thanks.
|
2007-01-13 20:34:03 +01:00
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
2007-01-04 09:42:13 +01:00
|
|
|
|
sub help_groups_en {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>User Groups</h3>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
This help chapter does not exist in english. If you want to help us, you can
|
|
|
|
|
edit lib/Lemonldap/NG/Manager/Help.pm in lemonldap-ng source tree and send us
|
|
|
|
|
your contribution.<br>
|
|
|
|
|
Thanks.
|
2007-01-04 09:42:13 +01:00
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_ldap_en {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>LDAP Parameters</h3>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
This help chapter does not exist in english. If you want to help us, you can
|
|
|
|
|
edit lib/Lemonldap/NG/Manager/Help.pm in lemonldap-ng source tree and send us
|
|
|
|
|
your contribution.<br>
|
|
|
|
|
Thanks.
|
2007-01-04 09:42:13 +01:00
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_vars_en {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Variables (LDAP attributes)</h3>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
This help chapter does not exist in english. If you want to help us, you can
|
|
|
|
|
edit lib/Lemonldap/NG/Manager/Help.pm in lemonldap-ng source tree and send us
|
|
|
|
|
your contribution.<br>
|
|
|
|
|
Thanks.
|
2007-01-04 09:42:13 +01:00
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_storage_en {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Sessions Storage</h3>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
This help chapter does not exist in english. If you want to help us, you can
|
|
|
|
|
edit lib/Lemonldap/NG/Manager/Help.pm in lemonldap-ng source tree and send us
|
|
|
|
|
your contribution.<br>
|
|
|
|
|
Thanks.
|
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_authParams_en {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Authentication Parameters</h3>
|
|
|
|
|
This help chapter does not exist in english. If you want to help us, you can
|
|
|
|
|
edit lib/Lemonldap/NG/Manager/Help.pm in lemonldap-ng source tree and send us
|
|
|
|
|
your contribution.<br>
|
|
|
|
|
Thanks.
|
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_cookieName_en {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Cookie Name</h3>
|
|
|
|
|
This help chapter does not exist in english. If you want to help us, you can
|
|
|
|
|
edit lib/Lemonldap/NG/Manager/Help.pm in lemonldap-ng source tree and send us
|
|
|
|
|
your contribution.<br>
|
|
|
|
|
Thanks.
|
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_domain_en {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Protected domain</h3>
|
|
|
|
|
This help chapter does not exist in english. If you want to help us, you can
|
|
|
|
|
edit lib/Lemonldap/NG/Manager/Help.pm in lemonldap-ng source tree and send us
|
|
|
|
|
your contribution.<br>
|
|
|
|
|
Thanks.
|
2007-01-04 09:42:13 +01:00
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_virtualHosts_fr {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Hôtes virtuels</h3>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<p> La configuration d'un hôte virtuel est divisée en 2 parties : les
|
2007-01-14 21:54:52 +01:00
|
|
|
|
règles et les en-têtes HTTP exportés.</p>
|
|
|
|
|
|
|
|
|
|
<p> <u>Note</u> : pour que le mécanisme d'authentification fonctionne, tous
|
|
|
|
|
les hôtes virtuels et le portail doivent se trouver dans le domaine déclaré
|
|
|
|
|
dans les paramètres généraux.</p>
|
|
|
|
|
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<h4> Règles</h4>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<p>Une règle associe une expression régulière perl à une expression booléenne.
|
|
|
|
|
Lors de l'accès d'un utilisateur, si l'URL demandée correspond à la règle, le
|
|
|
|
|
droit d'accès est calculé par l'expression booléenne. Exemple :</p>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<pre>
|
|
|
|
|
# Hôte virtuel test.example.com - règles
|
|
|
|
|
^/protected => \$groups =~ /\\bgroup1\\b/
|
|
|
|
|
</pre>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<p> La règle ci-dessus signifie que pour les URL commençant par '/protected',
|
|
|
|
|
les utilisateurs doivent appartenir au groupe 'group1'. Vous pouvez également
|
|
|
|
|
utiliser les mots-clefs 'accept' et 'deny'. Attention, 'accept' signifie que
|
|
|
|
|
tous les utilisateurs authentifiés peuvent accéder.</p>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<p>Si l'URL demandée ne correspond à aucune des expressions régulières, le
|
|
|
|
|
droit d'accès est calculé à partir de l'expression booléenne définie dans
|
|
|
|
|
la règle par défaut (default).</p>
|
|
|
|
|
|
|
|
|
|
<h4> En-têtes</h4>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<p> Les en-têtes servant à l'application à savoir qui est connecté se déclarent
|
|
|
|
|
comme suit : <tt><nom de l'en-tête> => <expression Perl>.
|
|
|
|
|
</p>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<p> Exemples :</p>
|
2007-01-14 21:54:52 +01:00
|
|
|
|
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<pre>
|
|
|
|
|
Auth-User => \$uid
|
|
|
|
|
Unite => \$departmentUID
|
|
|
|
|
</pre>
|
2007-01-04 09:42:13 +01:00
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
2007-01-13 20:34:03 +01:00
|
|
|
|
sub help_macros_fr {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Macros</h3>
|
2007-01-14 08:51:44 +01:00
|
|
|
|
<p> Les macros permettent d'ajouter des variables calculées à partir des
|
|
|
|
|
attributs LDAP (variables exportées). Elles évitent de répéter le même calcul
|
2007-01-13 20:34:03 +01:00
|
|
|
|
plusieurs fois dans la configuration. Exemple :</p>
|
|
|
|
|
<pre>
|
|
|
|
|
# macros
|
|
|
|
|
nom_complet => \$givenname . " " . \$surname
|
|
|
|
|
admin => \$uid eq "foo" or \$uid eq "bar"
|
|
|
|
|
|
2007-01-14 08:51:44 +01:00
|
|
|
|
# test.example.com - En-têtes
|
2007-01-13 20:34:03 +01:00
|
|
|
|
Nom => \$nom_complet
|
|
|
|
|
|
2007-01-14 08:51:44 +01:00
|
|
|
|
# test.example.com - Règles
|
2007-01-13 20:34:03 +01:00
|
|
|
|
^/admin/ => \$admin
|
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
2007-01-04 09:42:13 +01:00
|
|
|
|
sub help_groups_fr {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Groupes d'utilisateurs</h3>
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<p>Les groupes ne sont pas indispensables mais accélèrent le traitement des
|
|
|
|
|
requêtes. Par exemple, si un hôte virtuel est autorisé nominativement à
|
|
|
|
|
user, user2 et user3, la règle d'accès s'écrira :</p>
|
|
|
|
|
<pre>
|
|
|
|
|
# test.example.com - Règles
|
|
|
|
|
default => \$uid eq "user1" or \$uid eq "user2" or \$uid eq "user3"
|
|
|
|
|
</pre>
|
|
|
|
|
<p> Le problème est que cette expression sera calculée à chaque requête HTTP.
|
|
|
|
|
D'autre part, si 2 hôtes virtuels ont la même règle d'accès, toute modification
|
|
|
|
|
doit être répercutée sur les deux hôtes virtuels. Le système des groupes permet
|
|
|
|
|
de résoudre ces deux problèmes : lors de la connexion au portail, les
|
|
|
|
|
expressions complexes sont calculées une fois pour toute la session et le
|
|
|
|
|
résultat est stocké dans la chaîne \$groups. L'exemple précédent devient
|
|
|
|
|
alors :</p>
|
|
|
|
|
<pre>
|
|
|
|
|
# Déclaration d'un groupe (on suppose ici que ou est un champ mono-valué)
|
|
|
|
|
group1 => \$uid eq "user1" or \$uid eq "user2" or \$uid eq "user3"
|
|
|
|
|
|
|
|
|
|
# Utilisation :
|
|
|
|
|
# test.example.com - Règles
|
|
|
|
|
default => \$groups =~ /\\bgroup1\\b/
|
|
|
|
|
</pre>
|
|
|
|
|
<p> Cette dernière expression est une expression régulière Perl (PCRE) qui
|
|
|
|
|
correspond à la recherche du mot group1 dans la chaîne \$groups (\\b signifie
|
|
|
|
|
début ou fin de mot).</p>
|
|
|
|
|
|
|
|
|
|
<p>La variable exportée \$groups est une chaîne de caractères composés de tous les
|
|
|
|
|
noms de groupes auquel l'utilisateur connecté appartient (c'est à dire les
|
|
|
|
|
noms de groupe pour lesquels l'expression est vraie.</p>
|
2007-01-04 09:42:13 +01:00
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_ldap_fr {
|
|
|
|
|
print <<EOT;
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<h3>Paramètres LDAP</h3>
|
|
|
|
|
<p> Le paramètres LDAP servent à identifier les utilisateurs. Ils doivent être
|
|
|
|
|
renseignés même si l'authentification est réalisée par un autre moyen (SSL par
|
|
|
|
|
exemple).</p>
|
|
|
|
|
<ul>
|
|
|
|
|
<li>Base de recherche LDAP : obligatoire (à moins que votre serveur LDAP
|
|
|
|
|
accepte les requêtes sans base) ; exemple :
|
|
|
|
|
<pre> dc=example, dc=com </pre></li>
|
|
|
|
|
<li>Port du serveur LDAP : 389 par défaut ;</li>
|
|
|
|
|
<li>Serveur LDAP : Nom (ou adresse IP) du serveur LDAP ;</li>
|
|
|
|
|
<li>Compte de connexion LDAP : optionnel, à renseigner si les attributs LDAP
|
|
|
|
|
utilisés ne sont pas accessibles par une session anonyme. Ce compte est
|
|
|
|
|
utilisé avant l'authentification pour trouver le dn de l'utilisateur ;
|
|
|
|
|
</li>
|
|
|
|
|
<li>Mot de passe LDAP : mot de passe correspondant au compte ci-dessus.
|
|
|
|
|
</ul>
|
2007-01-04 09:42:13 +01:00
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_vars_fr {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Variables (attributs LDAP)</h3>
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<p> Indiquez ici tous les attributs LDAP dont vous avez besoin dans votre
|
|
|
|
|
configuration (pour définir les groupes, les règles d'accès au hôtes virtuels
|
|
|
|
|
ou encore les en-têtes HTTP).</p>
|
|
|
|
|
<p>La déclaration d'une variable se fait sous la forme :</p>
|
|
|
|
|
<pre> <nom declare> => <nom de l'attribut LDAP></pre>
|
|
|
|
|
<p>Exemples :</p>
|
|
|
|
|
<pre>
|
|
|
|
|
uid => uid
|
|
|
|
|
unite => ou
|
|
|
|
|
</pre>
|
|
|
|
|
Les noms déclarés s'utilisent ensuite dans les règles, les groupes ou les
|
|
|
|
|
en-têtes HTTP en les faisant précéder du signe '\$'. Exemple :
|
|
|
|
|
<pre>
|
|
|
|
|
group1 => \$uid eq 'user1' or \$uid eq 'user2'
|
2007-01-04 09:42:13 +01:00
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_storage_fr {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Stockage des sessions</h3>
|
2007-01-05 20:26:53 +01:00
|
|
|
|
<p> Le stockage des sessions Lemonldap::NG est réalisé au travers des modules
|
|
|
|
|
hérités de Apache::Session. Vous devez indiquer ici le module choisi et
|
|
|
|
|
indiquer les paramètres correspondants à ce module :</p>
|
|
|
|
|
<p>Exemples :</p>
|
|
|
|
|
<ul>
|
|
|
|
|
<li>Module => Apache::Session::File, <br>options :
|
|
|
|
|
<ul>
|
|
|
|
|
<li> Directory => /var/cache/lemonldap</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</li>
|
|
|
|
|
<li>Module => Apache::Session::MySQL, <br>options :
|
|
|
|
|
<ul>
|
|
|
|
|
<li> DataSource => DBI:mysql:database=lemon;host=1.2.3.4</li>
|
|
|
|
|
<li> UserName => Lemonldap
|
|
|
|
|
<li> Password => mypass
|
|
|
|
|
</ul>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
2007-01-04 09:42:13 +01:00
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
2007-01-14 21:54:52 +01:00
|
|
|
|
sub help_authParams_fr {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Paramètres d'authentification</h3>
|
|
|
|
|
<dl>
|
|
|
|
|
<dt> Type d'authentfication </dt>
|
|
|
|
|
<dd> Le schéma classique d'authentification Lemonldap consiste à utiliser une
|
|
|
|
|
authentification par LDAP. Vous pouvez changer ceci en ssl par exemple.</dd>
|
|
|
|
|
|
|
|
|
|
<dt> Portail </dt>
|
|
|
|
|
<dd> Indiquez ici l'URL ou seront renvoyés les utilisateurs non authentifiés.
|
|
|
|
|
Cette URL doit bien sur correspondre à un portail utilisant
|
|
|
|
|
Lemonldap::NG::Portal::SharedConf.</dd>
|
|
|
|
|
|
|
|
|
|
<dt> Cookie sécurisé (SSL) </dt>
|
|
|
|
|
<dd> Une fois authentifié, l'utilisateur est reconnu par son cookie. Si tous
|
|
|
|
|
les hôtes virtuels de votre domaine son protégés par SSL, mettez cette option
|
|
|
|
|
à 1, ainsi le cookie ne sera présenté par le navigateur qu'aux sites protégés,
|
|
|
|
|
ce qui évite un vol de session.
|
|
|
|
|
</dl>
|
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_cookieName_fr {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Nom de cookie</h3>
|
|
|
|
|
<p> Indiquez ici le nom du cookie ('lemonldap' par d<EFBFBD>faut).<br>
|
|
|
|
|
|
|
|
|
|
ATTENTION, tout changement n<EFBFBD>cessite le red<EFBFBD>marrage de tous les serveurs Apache
|
|
|
|
|
h<EFBFBD>bergeant des agents de protection Lemonldap::NG::Handler.</p>
|
|
|
|
|
EOT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub help_domain_fr {
|
|
|
|
|
print <<EOT;
|
|
|
|
|
<h3>Domaine prot<EFBFBD>g<EFBFBD></h3>
|
|
|
|
|
<p> Indiquez ici le nom du domaine (ou du sous-domaine) contenant vos
|
|
|
|
|
applications <EFBFBD> prot<EFBFBD>ger.<br>
|
|
|
|
|
ATTENTION : tous les h<EFBFBD>tes virtuels prot<EFBFBD>g<EFBFBD>s ainsi que le portail
|
|
|
|
|
d'authentification doivent se trouver dans ce domaine.
|
|
|
|
|
EOT
|
|
|
|
|
}
|