.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Lemonldap::NG::Handler::SharedConf 3pm" .TH Lemonldap::NG::Handler::SharedConf 3pm "2014-01-17" "perl v5.20.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Lemonldap::NG::Handler::SharedConf \- Perl extension to use dynamic configuration provide by Lemonldap::NG::Manager. .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 10 \& package My::Package; \& use Lemonldap::NG::Handler::SharedConf; \& @ISA = qw(Lemonldap::NG::Handler::SharedConf); \& _\|_PACKAGE_\|_\->init ( { \& localStorage => "Cache::FileCache", \& localStorageOptions => { \& \*(Aqnamespace\*(Aq => \*(Aqlemonldap\-ng\*(Aq, \& \*(Aqdefault_expires_in\*(Aq => 600, \& }, \& configStorage => { \& type => "DBI" \& dbiChain => "DBI:mysql:database=$database;host=$hostname;port=$port", \& dbiUser => "lemonldap", \& dbiPassword => "password", \& }, \& } ); .Ve .PP Call your package in /apache\-dir/conf/httpd.conf : .PP .Vb 7 \& PerlRequire MyFile \& # TOTAL PROTECTION \& PerlHeaderParserHandler My::Package \& # OR SELECTED AREA \& \& PerlHeaderParserHandler My::Package \& .Ve .PP The configuration is loaded only at Apache start. Create an \s-1URI\s0 to force configuration reload, so you don't need to restart Apache at each change : .PP .Vb 7 \& # /apache\-dir/conf/httpd.conf \& \& Order deny,allow \& Deny from all \& Allow from my.manager.com \& PerlHeaderParserHandler My::Package\->refresh \& .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This library inherit from Lemonldap::NG::Handler::Simple to build a complete \s-1SSO\s0 Handler System: a central database contains the policy of your domain. People that want to access to a protected applications are redirected to the portal that run Lemonldap::NG::Portal::SharedConf. After reading configuration from the database and authenticating the user, it stores a key word for each application the user is granted to access to. Then the user is redirected to the application he wanted to access and the Apache handler build with Lemonldap::NG::Handler::SharedConf::DBI has just to verify that the keyword corresponding to the protected area is stored in the database. .SS "\s-1OVERLOADED SUBROUTINES\s0" .IX Subsection "OVERLOADED SUBROUTINES" \fIinit\fR .IX Subsection "init" .PP Like Lemonldap::NG::Handler::Simple::\fIinit()\fR but read only localStorage related options. You may change default time between two configuration checks with the \f(CW\*(C`reloadTime\*(C'\fR parameter (default 600s). .SH "OPERATION" .IX Header "OPERATION" Each new Apache child checks if there's a configuration stored in the local store. If not, it calls getConf to get one and store it in the local store by calling setconf. .PP Every 600 seconds, each Apache child checks if the local stored configuration has changed and reload it if it has. .PP When refresh subroutine is called (by http for example: see synopsis), getConf is called to get the new configuration and setconf is called to store it in the local store. .SH "SEE ALSO" .IX Header "SEE ALSO" Lemonldap::NG::Handler, Lemonldap::NG::Manager, Lemonldap::NG::Portal, .SH "AUTHOR" .IX Header "AUTHOR" .IP "Clement Oudot, " 4 .IX Item "Clement Oudot, " .PD 0 .IP "Franc\*,ois\-Xavier Deltombe, " 4 .IX Item "Franc,ois-Xavier Deltombe, " .IP "Xavier Guimard, " 4 .IX Item "Xavier Guimard, " .PD .SH "BUG REPORT" .IX Header "BUG REPORT" Use \s-1OW2\s0 system to report bug or ask for features: .SH "DOWNLOAD" .IX Header "DOWNLOAD" Lemonldap::NG is available at .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" .IP "Copyright (C) 2006, 2007, 2008, 2009, 2010, 2013 by Xavier Guimard, " 4 .IX Item "Copyright (C) 2006, 2007, 2008, 2009, 2010, 2013 by Xavier Guimard, " .PD 0 .IP "Copyright (C) 2012 by Franc\*,ois\-Xavier Deltombe, " 4 .IX Item "Copyright (C) 2012 by Franc,ois-Xavier Deltombe, " .IP "Copyright (C) 2006, 2008, 2009, 2010, 2011, 2012 by Clement Oudot, " 4 .IX Item "Copyright (C) 2006, 2008, 2009, 2010, 2011, 2012 by Clement Oudot, " .PD .PP This library is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. .PP This program is distributed in the hope that it will be useful, but \s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of \&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE. \s0 See the \&\s-1GNU\s0 General Public License for more details. .PP You should have received a copy of the \s-1GNU\s0 General Public License along with this program. If not, see .