lemonldap-ng/po-doc/fr/pages/documentation/1.9/extendedfunctions.html
2016-02-10 10:17:52 +00:00

355 lines
13 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"
lang="fr" dir="ltr">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title><!-- metadata --><!-- style sheet links -->
<meta name="generator" content="Hors ligne" />
<meta name="version" content="Hors-ligne 0.1" />
<link rel="stylesheet" media="all" type="text/css" href="../../../css/all.css" />
<link rel="stylesheet" media="screen" type="text/css" href="../../../css/screen.css" />
<link rel="stylesheet" media="print" type="text/css" href="../../../css/print.css" />
</head>
<body>
<div class="dokuwiki export">
<h1 class="sectionedit1" id="extended_functions">Fonctions étendues</h1>
<div class="level1">
</div><!-- EDIT1 SECTION "Extended functions" [1-34] -->
<h2 class="sectionedit2" id="presentation">Présentation</h2>
<div class="level2">
<p>
When <a href="../../documentation/1.9/writingrulesand_headers.html" class="wikilink1" title="documentation:1.9:writingrulesand_headers">writing rules and headers</a>, you can use Perl expressions that will be evaluated in a jail, to prevent bad code execution.
</p>
<p>
C'est disponible pour :
</p>
<ul>
<li class="level1"><div class="li"> <a href="../../documentation/1.9/portalmenu.html#menu_modules" class="wikilink1" title="documentation:1.9:portalmenu">les règles d'activation des modules du menu</a></div>
</li>
<li class="level1"><div class="li"> <a href="../../documentation/1.9/formreplay.html" class="wikilink1" title="documentation:1.9:formreplay">les données à rejouer dans les formulaires</a></div>
</li>
<li class="level1"><div class="li"> Macros</div>
</li>
<li class="level1"><div class="li"> les règles d'utilisation des bases de données des fournisseur d'identité</div>
</li>
<li class="level1"><div class="li"> etc...</div>
</li>
</ul>
<p>
Dans cette cage, on peut accéder aux éléments suivants :
</p>
<ul>
<li class="level1"><div class="li"> Core Perl subroutines (split, pop, map, etc.)</div>
</li>
<li class="level1"><div class="li"> <a href="../../documentation/1.9/customfunctions.html" class="wikilink1" title="documentation:1.9:customfunctions">Fonctions personnalisées</a></div>
</li>
<li class="level1"><div class="li"> Fonction <a href="http://perldoc.perl.org/MIME/Base64.html" class="urlextern" title="http://perldoc.perl.org/MIME/Base64.html" rel="nofollow">encode_base64</a></div>
</li>
<li class="level1"><div class="li"> Environment variables, in some cases (through %ENV)</div>
</li>
<li class="level1"><div class="li"> <a href="#request_informations" title="documentation:1.9:extendedfunctions ↵" class="wikilink1">Informations about current request</a></div>
</li>
<li class="level1"><div class="li"> <a href="#extended_functions_list" title="documentation:1.9:extendedfunctions ↵" class="wikilink1">Extended functions</a>:</div>
<ul>
<li class="level2"><div class="li"> <a href="#date" title="documentation:1.9:extendedfunctions ↵" class="wikilink1">date</a></div>
</li>
<li class="level2"><div class="li"> <a href="#checklogonhours" title="documentation:1.9:extendedfunctions ↵" class="wikilink1">checkLogonHours</a></div>
</li>
<li class="level2"><div class="li"> <a href="#checkdate" title="documentation:1.9:extendedfunctions ↵" class="wikilink1">checkDate</a></div>
</li>
<li class="level2"><div class="li"> <a href="#basic" title="documentation:1.9:extendedfunctions ↵" class="wikilink1">basic</a></div>
</li>
<li class="level2"><div class="li"> <a href="#unicode2iso" title="documentation:1.9:extendedfunctions ↵" class="wikilink1">unicode2iso</a></div>
</li>
<li class="level2"><div class="li"> <a href="#iso2unicode" title="documentation:1.9:extendedfunctions ↵" class="wikilink1">iso2unicode</a></div>
</li>
<li class="level2"><div class="li"> <a href="#groupmatch" title="documentation:1.9:extendedfunctions ↵" class="wikilink1">groupMatch</a></div>
</li>
</ul>
</li>
</ul>
<p>
</p><p></p><div class="notetip">Pour en savoir plus sur la cage, consulter la <a href="http://perldoc.perl.org/Safe.html" class="urlextern" title="http://perldoc.perl.org/Safe.html" rel="nofollow">documentation du module Safe</a>.
</div></p>
</p>
</div><!-- EDIT2 SECTION "Presentation" [35-1108] -->
<h2 class="sectionedit3" id="request_informations">Request informations</h2>
<div class="level2">
<p>
The following data about the current request are available through functions :
</p>
<ul>
<li class="level1"><div class="li"> hostname</div>
</li>
<li class="level1"><div class="li"> remote_ip: the client <abbr title="Internet Protocol">IP</abbr> address</div>
</li>
<li class="level1"><div class="li"> uri: <abbr title="Uniform Resource Locator">URL</abbr> path</div>
</li>
<li class="level1"><div class="li"> uri_with_args: <abbr title="Uniform Resource Locator">URL</abbr> path with query string</div>
</li>
<li class="level1"><div class="li"> unparsed_uri: <abbr title="Uniform Resource Locator">URL</abbr> path, before <abbr title="Uniform Resource Locator">URL</abbr> decoding</div>
</li>
<li class="level1"><div class="li"> args: the query string</div>
</li>
<li class="level1"><div class="li"> method: the request method (GET, POST etc.)</div>
</li>
<li class="level1"><div class="li"> header_in(“Your-Request-Header”): any request header</div>
</li>
</ul>
</div><!-- EDIT3 SECTION "Request informations" [1109-1515] -->
<h2 class="sectionedit4" id="extended_functions_list">Extended Functions List</h2>
<div class="level2">
</div><!-- EDIT4 SECTION "Extended Functions List" [1516-1552] -->
<h3 class="sectionedit5" id="date">date</h3>
<div class="level3">
<p>
Returns the date, in format YYYYMMDDHHMMSS, local time by default, GMT by calling
</p>
<pre class="code">date(1)</pre>
</div><!-- EDIT5 SECTION "date" [1553-1672] -->
<h3 class="sectionedit6" id="checklogonhours">checkLogonHours</h3>
<div class="level3">
<p>
Cette fonction examine le jour et l'heure de la requête courante et la compare aux jours et heures autorisés. Elle retourne 1 si c'est bon, 0 sinon. All e By default, the allowed days and hours is an hexadecimal value, representing each hour of the week. Un jour a 24 heures et une semaine 7 jours, donc la valeur contient 168 bits, convertie en 42 caractères hexadécimaux. Dimanche est le premier jour.
</p>
<p>
Par exemple, pour un accès total excepté le week-end:
</p>
<pre class="code">000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000</pre>
<p>
</p><p></p><div class="notetip">L'<a href="../../documentation/1.9/authldap.html#schema_extension" class="wikilink1" title="documentation:1.9:authldap">extension de schéma LDAP</a> peut être utilisée pour stocker cette valeur. La valeur binaire de l'attribut logonHours d'Active Directory peut également être utilisée
</div></p>
</p>
<p>
Paramètres de la fonction :
</p>
<ul>
<li class="level1"><div class="li"> <strong>logon_hours</strong> : chaîne représentant les heures autorisées (GMT)</div>
</li>
<li class="level1"><div class="li"> <strong>syntax</strong> (optionnel) : <code>hexadecimal</code> (défaut) ou <code>octetstring</code></div>
</li>
<li class="level1"><div class="li"> <strong>time_correction</strong> (optionnel) : heures à ajouter ou soustraire</div>
</li>
<li class="level1"><div class="li"> <strong>default_access</strong> (optionnel) : resultat à retourner si <strong>logon_hours</strong> est vide</div>
</li>
</ul>
<p>
Exemple d'usage simple :
</p>
<pre class="code">checkLogonHours($ssoLogonHours)</pre>
<p>
Si une valeur binaire est utilisée (Active Directory) :
</p>
<pre class="code">All e
checkLogonHours($ssoLogonHours, 'octetstring')</pre>
<p>
On peut aussi configurer jetlag (si tous les utilisateurs utilisent le même fuseau):
</p>
<pre class="code">checkLogonHours($ssoLogonHours, '', '+2')</pre>
<p>
Si plusieurs fuseaux sont utilisés, le jetlag doit être introduit dans le compte dans la valeur ssoLogonHours, ou utiliser le paramètre $_timezone. Ce paramètre est géré par le portail et utilise javascript pour obtenir le fuseau de l'utilisateur connecté. Ça doit marcher avec tous les navigateurs :
</p>
<pre class="code">checkLogonHours($ssoLogonHours, '', $_timezone)</pre>
<p>
Il est possible de modifier le comportement par défaut pour les utilisateurs ne disposant pas d'une valeur ssoLogonHours. Sinon, par défaut, les utilisateurs sans créneau horaire de connexion sont rejetés. On peut autoriser ces utilisateurs au lieu de les rejeter :
</p>
<pre class="code">checkLogonHours($ssoLogonHours, '', '', '1')</pre>
</div><!-- EDIT6 SECTION "checkLogonHours" [1673-3610] -->
<h3 class="sectionedit7" id="checkdate">checkDate</h3>
<div class="level3">
<p>
Cette fonction examine la date de la requête en cours et la compare avec une date de début et de fin. Elle retourne 1 si c'est bon, 0 sinon.
</p>
<p>
</p><p></p><div class="notetip">L'<a href="../../documentation/1.9/authldap.html#schema_extension" class="wikilink1" title="documentation:1.9:authldap">extension de schéma LDAP</a> peut être utilisée pour stocker ces valeurs.
</div></p>
</p>
<p>
The date format is the LDAP date syntax, for example for the 1st March 2009:
</p>
<pre class="code">20090301000000Z</pre>
<p>
Paramètres de la fonction :
</p>
<ul>
<li class="level1"><div class="li"> <strong>start</strong> : date de début (GMT)</div>
</li>
<li class="level1"><div class="li"> <strong>end</strong>: date de fin (GMT)</div>
</li>
<li class="level1"><div class="li"> <strong>default_access</strong> (optionnel) : resultat à retourner si <strong>start</strong> et <strong>end</strong> sont vides</div>
</li>
</ul>
<p>
Exemple d'usage simple :
</p>
<pre class="code">checkDate($ssoStartDate, $ssoEndDate)</pre>
</div><!-- EDIT7 SECTION "checkDate" [3611-4238] -->
<h3 class="sectionedit8" id="basic">basic</h3>
<div class="level3">
<p>
</p><p></p><div class="noteimportant">Cette fonction n'est pas compatible avec la <a href="../../documentation/1.9/safejail.html" class="wikilink1" title="documentation:1.9:safejail">cage saine</a>, il faut désactiver la mise en cage.
</div></p>
</p>
<p>
This function builds the <code>Authorization</code> HTTP header used in <a href="../../documentation/1.9/applications/authbasic.html" class="wikilink1" title="documentation:1.9:applications:authbasic">HTTP Basic authentication scheme</a>. It will force conversion from UTF-8 to ISO-8859-1 of user and password data.
</p>
<p>
Paramètres de la fonction :
</p>
<ul>
<li class="level1"><div class="li"> <strong>user</strong></div>
</li>
<li class="level1"><div class="li"> <strong>password</strong></div>
</li>
</ul>
<p>
Exemple d'usage simple :
</p>
<pre class="code">basic($uid,$_password)</pre>
</div><!-- EDIT8 SECTION "basic" [4239-4701] -->
<h3 class="sectionedit9" id="unicode2iso">unicode2iso</h3>
<div class="level3">
<p>
</p><p></p><div class="noteimportant">Cette fonction n'est pas compatible avec la <a href="../../documentation/1.9/safejail.html" class="wikilink1" title="documentation:1.9:safejail">cage saine</a>, il faut désactiver la mise en cage.
</div></p>
</p>
<p>
This function convert a string from UTF-8 to ISO-8859-1.
</p>
<p>
Paramètres de la fonction :
</p>
<ul>
<li class="level1"><div class="li"> <strong>chaîne</strong></div>
</li>
</ul>
<p>
Exemple d'usage simple :
</p>
<pre class="code">unicode2iso($nom)</pre>
</div><!-- EDIT9 SECTION "unicode2iso" [4702-5006] -->
<h3 class="sectionedit10" id="iso2unicode">iso2unicode</h3>
<div class="level3">
<p>
</p><p></p><div class="noteimportant">Cette fonction n'est pas compatible avec la <a href="../../documentation/1.9/safejail.html" class="wikilink1" title="documentation:1.9:safejail">cage saine</a>, il faut désactiver la mise en cage.
</div></p>
</p>
<p>
This function convert a string from ISO-8859-1 to UTF-8.
</p>
<p>
Paramètres de la fonction :
</p>
<ul>
<li class="level1"><div class="li"> <strong>chaîne</strong></div>
</li>
</ul>
<p>
Exemple d'usage simple :
</p>
<pre class="code">iso2unicode($name)</pre>
</div><!-- EDIT10 SECTION "iso2unicode" [5007-5311] -->
<h3 class="sectionedit11" id="groupmatch">groupMatch</h3>
<div class="level3">
<p>
this function allows to parse the <code>$hGroups</code> variable to check if a value is present inside a group attribute.
</p>
<p>
Function parameter:
</p>
<ul>
<li class="level1"><div class="li"> <strong>groups</strong>: <code>$hGroups</code> variable</div>
</li>
<li class="level1"><div class="li"> <strong>attribute</strong>: Name of group attribute</div>
</li>
<li class="level1"><div class="li"> <strong>value</strong>: Value to check</div>
</li>
</ul>
<p>
Exemple d'usage simple :
</p>
<pre class="code">groupMatch($hGroups, 'description', 'Service 1')</pre>
</div>
</div><!-- closes <div class="dokuwiki export">--></body></html>