diff --git a/build/lemonldap-ng/Makefile b/build/lemonldap-ng/Makefile index cb4562cc8..1f1ecbbe8 100644 --- a/build/lemonldap-ng/Makefile +++ b/build/lemonldap-ng/Makefile @@ -1,38 +1,116 @@ #!/usr/bin/make -# Example and real root installation +# Prefix for packaging +DESTDIR= + +# Perl options +#PERLOPTIONS="INSTALLDIRS=vendor" +PERLOPTIONS= + +# Default directories install +PREFIX=/usr/local/ +LMPREFIX=$(PREFIX)lemonldap-ng/ +RLMPREFIX=$(DESTDIR)$(LMPREFIX) +# BIN dirs +BINDIR=$(RLMPREFIX)bin/ +SBINDIR=$(RLMPREFIX)sbin/ +DATADIR=$(LMPREFIX)data/ +RDATADIR=$(DESTDIR)$(DATADIR) + + EXAMPLEROOT=`pwd`/example/ -REALROOT=$(EXAMPLEROOT) -# Subfolders -SYSTEMCONFDIR=$(EXAMPLEROOT)etc/lemonldap-ng/ -SCRIPTSDIR=$(EXAMPLEROOT)var/lib/lemonldap-ng/ + +# Document roots for Apache VirtualHosts +DOCUMENTROOT=$(LMPREFIX)htdocs/ +PORTALDIR=$(DOCUMENTROOT)portal/ +RPORTALDIR=$(DESTDIR)$(PORTALDIR) +PORTALSKINSDIR=$(PORTALDIR)skins/ +RPORTALSKINSDIR=$(DESTDIR)$(PORTALSKINSDIR) +LASPPORTALDIR=$(DOCUMENTROOT)liberty-alliance-sp-portal/ +RLASPPORTALDIR=$(DESTDIR)$(LASPPORTALDIR) +MANAGERDIR=$(DOCUMENTROOT)manager/ +RMANAGERDIR=$(DESTDIR)$(MANAGERDIR) +MANAGERDATADIR=$(MANAGERDIR)imgs/ +RMANAGERDATADIR=$(DESTDIR)$(MANAGERDATADIR) +SESSIONSEXPLORERDIR=$(MANAGERDIR) +RSESSIONSEXPLORERDIR=$(DESTDIR)$(SESSIONSEXPLORERDIR) +SESSIONSEXPLORERDATADIR=$(SESSIONSEXPLORERDIR)images/ +RSESSIONSEXPLORERDATADIR=$(DESTDIR)$(SESSIONSEXPLORERDATADIR) +DOCDIR=$(DOCUMENTROOT)doc/ +RDOCDIR=$(DESTDIR)$(DOCDIR) +TESTDIR=$(DOCUMENTROOT)test/ +RTESTDIR=$(DESTDIR)$(TESTDIR) +EXAMPLESDIR=$(LMPREFIX)examples/ +REXAMPLESDIR=$(DESTDIR)$(EXAMPLESDIR) +TOOLSDIR=$(LMPREFIX)tools/ +RTOOLSDIR=$(DESTDIR)$(TOOLSDIR) + +DOCDIR=$(DOCUMENTROOT)doc/ +RDOCDIR=$(DESTDIR)$(DOCDIR) + +# Handler dir +HANDLERDIR=$(LMPREFIX)handler/ +RHANDLERDIR=$(DESTDIR)$(HANDLERDIR) + +# Configuration dir +CONFDIR=$(LMPREFIX)etc/ +RCONFDIR=$(DESTDIR)$(CONFDIR) +CRONDIR=$(LMPREFIX)etc/cron.d/ +RCRONDIR=$(DESTDIR)$(CRONDIR) +STORAGECONFFILE=$(CONFDIR)storage.conf + +# Lemonldap-ng configuration storage dir +FILECONFIGDIR=$(DATADIR)conf/ +RFILECONFIGDIR=$(DESTDIR)$(FILECONFIGDIR) + +# Apache::Session::File storage dir +APACHESESSIONFILEDIR=$(DATADIR)sessions/ +RAPACHESESSIONFILEDIR=$(DESTDIR)$(APACHESESSIONFILEDIR) +APACHESESSIONFILELOCKDIR=$(APACHESESSIONFILEDIR)lock/ +RAPACHESESSIONFILELOCKDIR=$(DESTDIR)$(APACHESESSIONFILELOCKDIR) +APACHEUSER= +APACHEGROUP= + # DNS Domain for cookie and virtual hosts -DNSDOMAIN="example.com" +DNSDOMAIN=example.com + # LDAP parameters -LDAPHOST="localhost" -LDAPPORT="389" -LDAPSUFFIX="dc=example,dc=net" +LDAPHOST=localhost +LDAPPORT=389 +LDAPSUFFIX=dc=example,dc=net + # Other VERSION=`head -n1 changelog |sed -e 's/lemonldap-ng (//' -e 's/).*$$//'` -SRCCOMMONDIR=lemonldap-ng-common -SRCHANDLERDIR=lemonldap-ng-handler -SRCPORTALDIR=lemonldap-ng-portal -SRCMANAGERDIR=lemonldap-ng-manager -EXAMPLELANG=en # For static Manager only -DESTFILECONFDIR=$(SYSTEMCONFDIR)conf/ -DESTSESSIONDIR=$(SCRIPTSDIR)sessions/ -DESTLASPDIR=$(SCRIPTSDIR)liberty-alliance-sp-portal -DESTPORTALDIR=$(SCRIPTSDIR)portal/ -DESTHANDLERDIR=$(SCRIPTSDIR)handler/ -DESTMANAGERDIR=$(SCRIPTSDIR)manager/ -DESTDOCSDIR=$(SCRIPTSDIR)docs/ -# Real directories for file content substitution -REALSYSTEMCONFDIR=$(REALROOT)etc/lemonldap-ng/ -REALSCRIPTSDIR=$(REALROOT)var/lib/lemonldap-ng/ -REALDESTFILECONFDIR=$(REALSYSTEMCONFDIR)conf/ -REALDESTSESSIONDIR=$(REALSCRIPTSDIR)sessions/ -REALDESTLASPDIR=$(REALSCRIPTSDIR)liberty-alliance-sp-portal +SRCCOMMONDIR=lemonldap-ng-common/ +SRCHANDLERDIR=lemonldap-ng-handler/ +SRCPORTALDIR=lemonldap-ng-portal/ +SRCMANAGERDIR=lemonldap-ng-manager/ +EXAMPLELANG=en # For static Manager example only +# +# Perl libraries configuration +# +configure: common_conf handler_conf portal_conf manager_conf + +common_conf: + @cd ${SRCCOMMONDIR}; LMNGCONFFILE=$(STORAGECONFFILE) perl Makefile.PL $(PERLOPTIONS) + @touch common_conf + +handler_conf: + @cd ${SRCHANDLERDIR}; perl Makefile.PL $(PERLOPTIONS) + @touch handler_conf + +portal_conf: + @cd ${SRCPORTALDIR}; perl Makefile.PL $(PERLOPTIONS) + @touch portal_conf + +manager_conf: + @cd ${SRCMANAGERDIR}; perl Makefile.PL $(PERLOPTIONS) + @touch manager_conf + +# +# Perl libraries make +# all: common handler manager portal common: common_conf @@ -51,24 +129,6 @@ manager: manager_conf @$(MAKE) -C ${SRCMANAGERDIR} @touch manager -configure: common_conf handler_conf portal_conf manager_conf - -common_conf: - @cd ${SRCCOMMONDIR}; perl Makefile.PL INSTALLDIRS=$(INSTALLDIRS) - @touch common_conf - -handler_conf: - @cd ${SRCHANDLERDIR}; perl Makefile.PL INSTALLDIRS=$(INSTALLDIRS) - @touch handler_conf - -portal_conf: - @cd ${SRCPORTALDIR}; perl Makefile.PL INSTALLDIRS=$(INSTALLDIRS) - @touch portal_conf - -manager_conf: - @cd ${SRCMANAGERDIR}; perl Makefile.PL INSTALLDIRS=$(INSTALLDIRS) - @touch manager_conf - test: common handler portal manager common_test handler_test portal_test manager_test common_test: common @@ -83,60 +143,153 @@ portal_test: portal handler_test common_test manager_test: manager handler_test common_test @$(MAKE) -C ${SRCMANAGERDIR} test INST_ARCHLIB=../${SRCCOMMONDIR}/blib/lib/ -install: common_install handler_install portal_install manager_install +# +# INSTALL +# +install: install_libs install_bin install_site -common_install: common +# +# Perl libraires install +# +install_libs: common_install_libs handler_install_libs portal_install_libs manager_install_libs + +common_install_libs: common @$(MAKE) -C ${SRCCOMMONDIR} install @touch common_install -handler_install: handler +handler_install_libs: handler @$(MAKE) -C ${SRCHANDLERDIR} install @touch handler_install -portal_install: portal +portal_install_libs: portal @$(MAKE) -C ${SRCPORTALDIR} install @touch portal_install -manager_install: manager +manager_install_libs: manager @$(MAKE) -C ${SRCMANAGERDIR} install @touch manager_install -distclean: clean +example: + @$(MAKE) -f $(MAKEFILE) install_site LMPREFIX=$(EXAMPLEROOT) -clean: common_clean handler_clean portal_clean manager_clean - @rm -rf ${SYSTEMCONFDIR} - @rm -rf ${SCRIPTSDIR} - @rm -vf *gz +install_bin: install_libs install_conf_dir + mkdir -p $(BINDIR) + cp --preserve=mode ${SRCPORTALDIR}/example/scripts/purgeCentralCache $(BINDIR) + cp --preserve=mode ${SRCMANAGERDIR}/example/scripts/lmConfigEditor $(BINDIR) -common_clean: - - $(MAKE) -C ${SRCCOMMONDIR} distclean - @rm -vf common* +# +# SITE INSTALL +# +install_site: install_manager_site install_portal_site install_handler_site install_test_site install_examples_site + @install -v -d $(RCONFDIR) + # Apache configuration files + @cp --remove-destination _example/etc/apache* $(RCONFDIR) + @perl -i -pe 's#__HANDLER__#${HANDLERDIR}MyHandler.pm#; \ + s/__DNSDOMAIN__/$(DNSDOMAIN)/g; \ + s#__PORTALDIR__#$(PORTALDIR)#g; \ + s#__MANAGERDIR__#$(MANAGERDIR)#g; \ + s#__TESTDIR__#$(TESTDIR)#g; \ + s#__DOCDIR__#$(DOCDIR)#g;' $(RCONFDIR)/apache* + # File for /etc/hosts inclusion + @cp --remove-destination _example/etc/for_etc_hosts $(RCONFDIR) + @perl -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)for_etc_hosts -handler_clean: - - $(MAKE) -C ${SRCHANDLERDIR} distclean - @rm -vf handler* +install_manager_site: install_conf_dir + # Manager install + @install -v -d ${RMANAGERDIR} ${RMANAGERDATADIR} \ + ${RSESSIONSEXPLORERDIR} $(RSESSIONSEXPLORERDATADIR) \ + $(RCONFDIR) + @find ${RMANAGERDIR} -type l -name imgs -delete + @find ${RMANAGERDIR} -type l -name images -delete + @cp -pR --remove-destination ${SRCMANAGERDIR}example/* ${RMANAGERDIR} + @rm -rf $$(find ${RMANAGERDIR} -type d -name .svn) + @if [ "${RMANAGERDIR}imgs/" != "${RMANAGERDATADIR}" ]; then \ + mv -f ${RMANAGERDIR}imgs/* ${RMANAGERDATADIR}; \ + rm -rf ${RMANAGERDIR}imgs; \ + ln -s $$(echo ${RMANAGERDATADIR} | sed -e 's/\/$$//') ${RMANAGERDIR}imgs; \ + fi + # apply.conf install + @mv ${RMANAGERDIR}apply.conf $(RCONFDIR) + @perl -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)apply.conf + @perl -i -pe 's#__APPLYCONFFILE__#$(CONFDIR)apply.conf#' ${RMANAGERDIR}index.pl + # Sessions explorer install + @if [ "${MANAGERDIR}" != "$(SESSIONSEXPLORERDIR)" ]; then mv -f ${RMANAGERDIR}sessions.pl $(RSESSIONSEXPLORERDIR); fi + @if [ "${MANAGERDIR}images/" != "${SESSIONSEXPLORERDATADIR}" ]; then \ + mv -f ${RMANAGERDIR}images/* ${RSESSIONSEXPLORERDATADIR}; \ + rm -rf ${RMANAGERDIR}images; \ + ln -s $$(echo ${SESSIONSEXPLORERDATADIR} | sed -e 's/\/$$//') ${RMANAGERDIR}images; \ + fi -portal_clean: - - $(MAKE) -C ${SRCPORTALDIR} distclean - @rm -vf portal* +install_portal_site: install_conf_dir + # Portal install + @install -v -d $(RPORTALDIR) $(RPORTALSKINSDIR) \ + $(RPORTALDIR)skins/ $(RLASPPORTALDIR) \ + $(RCRONDIR) $(RCONFDIR) + @for skin in $$(ls lemonldap-ng-portal/example/skins/); do \ + [ -h $(RPORTALDIR)skins/$$skin ] && rm -f $(RPORTALDIR)skins/$$skin; \ + install -v -d $(RPORTALSKINSDIR)$$skin; \ + done + @cp -pR --remove-destination ${SRCPORTALDIR}example/index_skin.pl ${RPORTALDIR}index.pl + @cp -pR --remove-destination ${SRCPORTALDIR}example/error.pl ${RPORTALDIR} + @perl -i -pe 's#__SKINDIR__#$(PORTALDIR)skins#; \ + s#__APPSXMLFILE__#$(CONFDIR)apps-list.xml#;' ${RPORTALDIR}index.pl ${RPORTALDIR}error.pl + @cp -pR --remove-destination ${SRCPORTALDIR}example/skins/* $(RPORTALSKINSDIR) + @if [ "$(PORTALDIR)skins/" != "$(PORTALSKINSDIR)" ]; then \ + for skin in $$(ls lemonldap-ng-portal/example/skins/); do \ + rm -rf $(RPORTALDIR)skins/$$skin/; \ + ln -s $(PORTALSKINSDIR)$$skin $(RPORTALDIR)skins/$$skin; \ + done; \ + fi + @cp --remove-destination _example/etc/apps-list* $(RCONFDIR) + @perl -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)apps-list.xml + # L-A portal install + @cp -pR --remove-destination ${SRCPORTALDIR}example/AuthLA/* $(RLASPPORTALDIR) + @perl -i -pe 's#__DIR__#$(LASPPORTALDIR)#g' $(RLASPPORTALDIR)index.pl + # Cron files + @cp --remove-destination lemonldap-ng-portal/example/scripts/purgeCentralCache.cron.d $(RCRONDIR) + # Clean SVN files + @rm -rf $$(find ${RPORTALDIR} $(RPORTALSKINSDIR) $(RLASPPORTALDIR) -type d -name .svn) -manager_clean: - - $(MAKE) -C ${SRCMANAGERDIR} distclean - @rm -vf manager* +install_handler_site: install_conf_dir + @install -v -d ${RHANDLERDIR} + @cp --remove-destination ${SRCHANDLERDIR}/example/MyHandler.pm ${RHANDLERDIR} -example: all - @mkdir -p ${DESTFILECONFDIR} ${DESTPORTALDIR} ${DESTHANDLERDIR} ${DESTMANAGERDIR} ${SYSTEMCONFDIR} ${DESTDOCSDIR} ${DESTSESSIONDIR} - @cp -a ${SRCHANDLERDIR}/example/* ${DESTHANDLERDIR} - @cp -a ${SRCPORTALDIR}/example/* ${DESTPORTALDIR} - @rm -rf ${DESTLASPDIR} - @mv ${DESTPORTALDIR}AuthLA $$(echo ${DESTLASPDIR} | sed -e 's/\/$$//') - @cp -a ${SRCMANAGERDIR}/example/* ${DESTMANAGERDIR} - @cp -a _example/etc/lemonldap-ng/* ${SYSTEMCONFDIR} - @cp -a _example/var/lib/lemonldap-ng/* ${SCRIPTSDIR} - @cp -a doc/* ${DESTDOCSDIR} - @find ${DESTLASPDIR} -type f -exec perl -i -pe 's#__DIR__/?#'${REALDESTLASPDIR}'#g;s#__CONFDIR__/?#'${REALDESTFILECONFDIR}'#g' {} \; - @find ${SCRIPTSDIR} -type f -exec perl -i -pe 's#__DIR__/?#'${REALSCRIPTSDIR}'#g;s#__SYSCONFDIR__/?#'${REALSYSTEMCONFDIR}'#g;s#__CONFDIR__/?#'${REALDESTFILECONFDIR}'#g;s#__SESSIONDIR__/?#'${REALDESTSESSIONDIR}'#g;s#__DNSDOMAIN__#'${DNSDOMAIN}'#g;s#__LDAPHOST__#'${LDAPHOST}'#g;s#__LDAPPORT__#'${LDAPPORT}'#g;s#__LDAPSUFFIX__#'${LDAPSUFFIX}'#g;' {} \; - @find ${SYSTEMCONFDIR} -type f -exec perl -i -pe 's#__DIR__/?#'${REALSCRIPTSDIR}'#g;s#__SESSIONDIR__/?#'${REALDESTSESSIONDIR}'#g;s#__DNSDOMAIN__#'${DNSDOMAIN}'#g;s#__LDAPHOST__#'${LDAPHOST}'#g;s#__LDAPPORT__#'${LDAPPORT}'#g;s#__LDAPSUFFIX__#'${LDAPSUFFIX}'#g;' {} \; +install_test_site: + @install -v -d $(RTESTDIR) + @cp -pR --remove-destination _example/test/* $(RTESTDIR) + @perl -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RTESTDIR)index.pl + +install_examples_site: + @install -v -d $(REXAMPLESDIR) + @for i in portal manager portal handler; do \ + cp -dpR --remove-destination lemonldap-ng-$$i/example $(REXAMPLESDIR)/$$i; \ + done + +install_conf_dir: install_sessions_dir + @install -v -d $(RCONFDIR) $(RFILECONFIGDIR) $(RTOOLSDIR) + @cp --remove-destination $(SRCCOMMONDIR)storage.conf $(RCONFDIR) + @cp _example/conf/lmConf-1 $(RFILECONFIGDIR) + @perl -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g;\ + s/__LDAPPORT__/$(LDAPPORT)/g;\ + s/__LDAPHOST__/$(LDAPHOST)/g;\ + s/__LDAPSUFFIX__/$(LDAPSUFFIX)/g;\ + s#__SESSIONDIR__#$(APACHESESSIONFILEDIR)#g;' $(RFILECONFIGDIR)lmConf-1 + @cp lemonldap-ng-common/tools/lmConfig.mysql lemonldap-ng-common/tools/apache-session-mysql.sql $(RTOOLSDIR) + +install_sessions_dir: + @install -m 777 -v -d $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) + # Fix Apache::Session directories permissions + @if [ "$(APACHEUSER)" != "" ]; then \ + chown $(APACHEUSER) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR); \ + if [ "$(APACHEGROUP)" != "" ]; then \ + chgrp $(APACHEGROUP) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR); \ + fi; \ + chmod 770 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR); \ + else \ + chmod 777 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR); \ + fi + +TODO: @echo @echo "LemonLDAP::NG example v${VERSION} is installed with these parameters:" @echo " - System configuration: ${SYSTEMCONFDIR}" @@ -177,12 +330,6 @@ postconf_unixrights: postconf: postconf_hosts postconf_unixrights @echo "Post configuration done" -production_preconf: -# TODO: modify EXAMPLEROOT and set it to / -# TODO: ask parameters value (like DNSDOMAIN, LDAPHOST, etc.) - -production_install: production_preconf example - uninstall: configure handler_uninstall portal_uninstall manager_uninstall common_uninstall: common @@ -239,3 +386,25 @@ static_example: example documentation: @cd doc/ && ../scripts/doc.pl +distclean: clean + +clean: common_clean handler_clean portal_clean manager_clean + @rm -rf $(EXAMPLEROOT) + @rm -vf *gz + +common_clean: + - $(MAKE) -C ${SRCCOMMONDIR} distclean + @rm -vf common* + +handler_clean: + - $(MAKE) -C ${SRCHANDLERDIR} distclean + @rm -vf handler* + +portal_clean: + - $(MAKE) -C ${SRCPORTALDIR} distclean + @rm -vf portal* + +manager_clean: + - $(MAKE) -C ${SRCMANAGERDIR} distclean + @rm -vf manager* + diff --git a/build/lemonldap-ng/_example/etc/lemonldap-ng/conf/lmConf-1 b/build/lemonldap-ng/_example/conf/lmConf-1 similarity index 100% rename from build/lemonldap-ng/_example/etc/lemonldap-ng/conf/lmConf-1 rename to build/lemonldap-ng/_example/conf/lmConf-1 diff --git a/build/lemonldap-ng/_example/etc/lemonldap-ng/apache.conf b/build/lemonldap-ng/_example/etc/apache.conf similarity index 87% rename from build/lemonldap-ng/_example/etc/lemonldap-ng/apache.conf rename to build/lemonldap-ng/_example/etc/apache.conf index f3d1c160d..d3d933cc2 100644 --- a/build/lemonldap-ng/_example/etc/lemonldap-ng/apache.conf +++ b/build/lemonldap-ng/_example/etc/apache.conf @@ -1,7 +1,7 @@ NameVirtualHost * # Perl environment -PerlRequire __DIR__/handler/MyHandler.pm +PerlRequire __HANDLER__ SetHandler perl-script PerlHandler Apache::Registry @@ -20,8 +20,8 @@ LogLevel warn ServerName auth.__DNSDOMAIN__ # DocumentRoot - DocumentRoot __DIR__/portal/ - + DocumentRoot __PORTALDIR__ + Order allow,deny Allow from all Options +ExecCGI @@ -34,8 +34,8 @@ LogLevel warn ServerName manager.__DNSDOMAIN__ # DocumentRoot - DocumentRoot __DIR__/manager/ - + DocumentRoot __MANAGERDIR__ + Order deny,allow Deny from all Allow from 127.0.0.0/8 @@ -43,8 +43,8 @@ LogLevel warn # On-line documentation - Alias /docs/ __DIR__/docs/ - + Alias /docs/ __DOCDIR__/docs/ + Order deny,allow Allow from all @@ -59,8 +59,8 @@ LogLevel warn PerlHeaderParserHandler My::Package # DocumentRoot - DocumentRoot __DIR__/test/ - + DocumentRoot __TESTDIR__ + Order deny,allow Allow from all Options +ExecCGI @@ -93,8 +93,8 @@ LogLevel warn PerlHeaderParserHandler My::Package # DocumentRoot - DocumentRoot __DIR__/test/ - + DocumentRoot __TESTDIR__ + Order deny,allow Allow from all Options +ExecCGI @@ -119,3 +119,4 @@ LogLevel warn # + diff --git a/build/lemonldap-ng/_example/etc/lemonldap-ng/apache2.conf b/build/lemonldap-ng/_example/etc/apache2.conf similarity index 87% rename from build/lemonldap-ng/_example/etc/lemonldap-ng/apache2.conf rename to build/lemonldap-ng/_example/etc/apache2.conf index 62abf6829..d11ab55fa 100644 --- a/build/lemonldap-ng/_example/etc/lemonldap-ng/apache2.conf +++ b/build/lemonldap-ng/_example/etc/apache2.conf @@ -1,7 +1,7 @@ NameVirtualHost * # Perl environment -PerlRequire __DIR__/handler/MyHandler.pm +PerlRequire __HANDLER__ PerlOptions +GlobalRequest SetHandler perl-script @@ -22,8 +22,8 @@ LogLevel warn ServerName auth.__DNSDOMAIN__ # DocumentRoot - DocumentRoot __DIR__/portal/ - + DocumentRoot __PORTALDIR__ + Order allow,deny Allow from all Options +ExecCGI @@ -36,8 +36,8 @@ LogLevel warn ServerName manager.__DNSDOMAIN__ # DocumentRoot - DocumentRoot __DIR__/manager/ - + DocumentRoot __MANAGERDIR__ + Order deny,allow Deny from all Allow from 127.0.0.0/8 @@ -45,8 +45,8 @@ LogLevel warn # On-line documentation - Alias /docs/ __DIR__/docs/ - + Alias /docs/ __DOCDIR__/docs/ + Order deny,allow Allow from all @@ -61,8 +61,8 @@ LogLevel warn PerlHeaderParserHandler My::Package # DocumentRoot - DocumentRoot __DIR__/test/ - + DocumentRoot __TESTDIR__ + Order deny,allow Allow from all Options +ExecCGI @@ -95,8 +95,8 @@ LogLevel warn PerlHeaderParserHandler My::Package # DocumentRoot - DocumentRoot __DIR__/test/ - + DocumentRoot __TESTDIR__ + Order deny,allow Allow from all Options +ExecCGI diff --git a/build/lemonldap-ng/_example/etc/lemonldap-ng/apps-list.dtd b/build/lemonldap-ng/_example/etc/apps-list.dtd similarity index 100% rename from build/lemonldap-ng/_example/etc/lemonldap-ng/apps-list.dtd rename to build/lemonldap-ng/_example/etc/apps-list.dtd diff --git a/build/lemonldap-ng/_example/etc/lemonldap-ng/apps-list.xml b/build/lemonldap-ng/_example/etc/apps-list.xml similarity index 100% rename from build/lemonldap-ng/_example/etc/lemonldap-ng/apps-list.xml rename to build/lemonldap-ng/_example/etc/apps-list.xml diff --git a/build/lemonldap-ng/_example/etc/lemonldap-ng/for_etc_hosts b/build/lemonldap-ng/_example/etc/for_etc_hosts similarity index 100% rename from build/lemonldap-ng/_example/etc/lemonldap-ng/for_etc_hosts rename to build/lemonldap-ng/_example/etc/for_etc_hosts diff --git a/build/lemonldap-ng/_example/test/index.pl b/build/lemonldap-ng/_example/test/index.pl new file mode 100755 index 000000000..127a64441 --- /dev/null +++ b/build/lemonldap-ng/_example/test/index.pl @@ -0,0 +1,145 @@ +#!/usr/bin/perl + +#================================================ +# LemonLDAP::NG default test page +# Display headers and environment +#================================================ + +# Init CGI +use CGI; +my $cgi = CGI->new; + +# GET parameters +my $name = $cgi->param("name") || "LemonLDAP::NG sample protected application"; +my $color = $cgi->param("color") || "#ddd"; + +# Local parameters +my $manager_url = "http://manager.__DNSDOMAIN__"; +my $portal_url = "http://auth.__DNSDOMAIN__"; + +# CSS +my $css = <{$a} = $_; + } +} + +# Display page +print $cgi->header; +print $cgi->start_html( -title => "$name", + -style => { -code => $css } ); + +print "
\n"; + +print "

$name

\n"; + +print "\n"; + +print "

Main informations

\n"; +print "
    \n"; +print "
  • Authentication status: SUCCESS
  • \n"; +print "
  • Connected user:
      \n"; +print "
    • \$ENV{HTTP_AUTH_USER}: $ENV{HTTP_AUTH_USER}
    • \n"; +print "
    • \$ENV{REMOTE_USER}: $ENV{REMOTE_USER}
    • \n"; +print "
  • \n"; +print "
\n"; +print "

Be carefull, the \$ENV{REMOTE_USER} is set only if your script is +in the same server than Lemonldap::NG Handler (\$whatToTrace parameter). If you use +it on a reverse-proxy, \$ENV{REMOTE_USER} is not set.

\n"; + +print "

HTTP headers

\n"; +print "

To know who is connected in your applications, you can read HTTP headers:

\n"; +print "\n"; +print "\n"; +foreach(sort keys %$headers) { + $style = $_ eq 'Auth-User' ? 'class="emphase"' : ''; + print " + + + + + \n" +} +print "
HeaderPerl CGIPHP scriptValue
$_\$ENV{$headers->{$_}}\$_SERVER{$headers->{$_}}$ENV{$headers->{$_}}
\n"; +print "

Note that Lemonldap::NG cookie is hidden. So that application developpers can +not spoof sessions.

\n"; +print "

You can access to any information (IP address or LDAP attribute) by customizing +exported headers with the Lemonldap::NG Management interface

\n"; + +print "

Environment for Perl CGI

\n"; +print "\n"; +print "\n"; +foreach(sort keys %ENV) { + my $tmp = $ENV{$_}; + $tmp =~ s/&/&/g; + $tmp =~ s/>/>/g; + $tmp =~ s/\n"; +} +print "
Environment variableValue
$_=> $tmp
\n"; +print "
\n"; +print $cgi->end_html; + diff --git a/modules/lemonldap-ng-common/Changes b/modules/lemonldap-ng-common/Changes index 3111ae4f6..7458edb18 100644 --- a/modules/lemonldap-ng-common/Changes +++ b/modules/lemonldap-ng-common/Changes @@ -1,5 +1,5 @@ Revision history for Perl extension Lemonldap::NG::Common. -0.1 Mon Nov 17 16:34:56 2008 +0.9 Mon Nov 17 16:34:56 2008 - New package including the old Lemonldap::NG::manager::Conf diff --git a/modules/lemonldap-ng-common/MANIFEST b/modules/lemonldap-ng-common/MANIFEST index 435175514..1ffa20329 100644 --- a/modules/lemonldap-ng-common/MANIFEST +++ b/modules/lemonldap-ng-common/MANIFEST @@ -13,8 +13,10 @@ MANIFEST META.yml Module meta-data (added by MakeMaker) README scripts/lmConfig_File2MySQL +storage.conf t/01-Manager-Conf.t t/02-Manager-Conf-File.t t/03-Manager-Conf-DBI.t t/04-Manager-Conf-SOAP.t t/10-Common.t +tools/lmConfig.mysql diff --git a/modules/lemonldap-ng-common/Makefile.PL b/modules/lemonldap-ng-common/Makefile.PL index 3dd0cf864..20a1b7152 100644 --- a/modules/lemonldap-ng-common/Makefile.PL +++ b/modules/lemonldap-ng-common/Makefile.PL @@ -1,6 +1,22 @@ use ExtUtils::MakeMaker; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. + +sub MY::top_targets { + my $self=shift; + my $r = $self->MM::top_targets(@_); + if(my $cf = $ENV{LMNGCONFFILE}) { + $r =~ s/^(all.*)$/$1 my_target/m; + $cf = quotemeta($cf); + $r .= <<"EOT"; + +my_target: + perl -i -pe 's/^(use constant DEFAULTCONFFILE =>).*\$\$/\$\$1 "$cf";/' blib/lib/Lemonldap/NG/Common/Conf.pm +EOT + } + return $r; +} + WriteMakefile( NAME => 'Lemonldap::NG::Common', VERSION_FROM => 'lib/Lemonldap/NG/Common.pm', # finds $VERSION diff --git a/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common.pm b/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common.pm index b21bb60a2..aac2a0d7f 100644 --- a/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common.pm +++ b/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common.pm @@ -1,5 +1,7 @@ package Lemonldap::NG::Common; +our $VERSION='0.9'; + use strict; 1; diff --git a/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf.pm b/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf.pm index 948b7b161..cfd287bd0 100644 --- a/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf.pm +++ b/modules/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf.pm @@ -6,9 +6,13 @@ use Data::Dumper; use Lemonldap::NG::Common::Conf::Constants; use Regexp::Assemble; +use constant DEFAULTCONFFILE => '/etc/lemonldap-ng/storage.conf'; + our $VERSION = 0.51; our $msg; +our %_confFiles; + sub new { my $class = shift; my $args; @@ -21,15 +25,16 @@ sub new { %$self = @_; } unless ( $self->{mdone} ) { + $self->_readConfFile( $self->{confFile} ); unless ( $self->{type} ) { - $msg = "configStorage: type is not defined\n"; + $msg .= "configStorage: type is not defined\n"; return 0; } $self->{type} = "Lemonldap::NG::Common::Conf::$self->{type}" - unless $self->{type} =~ /^Lemonldap/; + unless $self->{type} =~ /^Lemonldap::/; eval "require $self->{type}"; if ($@) { - $msg = "Unknown package $self->{type}"; + $msg .= "Unknown package $self->{type}"; return 0; } return 0 unless $self->prereq; @@ -39,7 +44,7 @@ sub new { if ( $self->{localStorage} and not defined( $self->{refLocalStorage} ) ) { eval "use $self->{localStorage};"; if ($@) { - $msg = "Unable to load $self->{localStorage}: $@"; + $msg .= "Unable to load $self->{localStorage}: $@"; } else { $self->{refLocalStorage} = @@ -49,6 +54,35 @@ sub new { return $self; } +sub _readConfFile { + my $self = shift; + my $file = shift || DEFAULTCONFFILE; + unless ( $_confFiles{$file} ) { + unless ( open F, $file ) { + $msg = "/etc/lemonldap-ng/storage.conf: $!"; + return 0; + } + while () { + next if ( /^\s*$/ or /^\s*#/ ); + chomp; + s/\r//g; + /^\s*([\w]+)(?:\s*[:=]\s*|\s+)(["']?)([\S].*[\S])\2\s*$/ or next; + my $k = $1; + $_confFiles{$file}->{$k} = $3; + if ( $_confFiles{$file}->{$k} =~ /^[{\[].*[}\]]$/ ) { + eval "\$_confFiles{'$file'}->{'$k'} = $_confFiles{$file}->{$k}"; + if ($@) { + $msg = "Error in file $file : $@"; + return 0; + } + } + } + close F; + } + %$self = ( %$self, %{ $_confFiles{$file} } ); + return 1; +} + sub saveConf { my ( $self, $conf ) = @_; @@ -99,7 +133,7 @@ sub getConf { return $self->getDBConf($args); } my $r = $self->{refLocalStorage}->get('conf'); - if ($r->{cfgNum} == $args->{cfgNum}) { + if ( $r->{cfgNum} == $args->{cfgNum} ) { $msg = "configuration unchanged, get configuration from cache"; return $r; } @@ -157,7 +191,7 @@ sub getDBConf { } $msg = "Get configuration $conf->{cfgNum}"; my $re = Regexp::Assemble->new(); - foreach(keys %{$conf->{locationRules}}) { + foreach ( keys %{ $conf->{locationRules} } ) { quotemeta($_); $re->add($_); } diff --git a/modules/lemonldap-ng-common/storage.conf b/modules/lemonldap-ng-common/storage.conf new file mode 100644 index 000000000..912a47696 --- /dev/null +++ b/modules/lemonldap-ng-common/storage.conf @@ -0,0 +1,43 @@ +# +# This file contains parameters used by Lemonldap::NG to find its configuration +# +# +# 1 - Type +# +# You can use one of the following: +# * File: you have to set 'dirName' parameter. Example: +# +# type = File +# dirName = /var/lib/lemonldap-ng/conf +# +# * DBI : you have to set 'dbiChain' (required) and 'dbiUser' and 'dbiPassword' +# if needed. Example: +# +# type = DBI +# dbiChain = DBI:mysql:database=lemonldap-ng;host=1.2.3.4 +# dbiUser = lemonldap +# dbiPassword = password +# +# * SOAP: SOAP configuration access is a sort of proxy: the SOAP server that +# runs Lemonldap::NG::Manager::SOAPServer is configured to use the real +# session storage type (DBI or File for example). +# You have to set 'proxy' parameter. Example: +# +# type = SOAP +# proxy = https://manager.example.com/soapmanager.pl +# proxyOptions = { timeout => 5 } +# User = lemonldap +# Password = mypassword +# +# 2 - LocalStorage +# +# To increase performances, use a local cache for the configuration. You have +# to choose a Cache::Cache module and set it's parameters (1 line). Example: +# +# localStorage = Cache::FileCache +# localStorageOptions = { 'namespace' => 'MyNamespace', 'default_expires_in' => 600, 'directory_umask' => '007', 'cache_root' => '/tmp', 'cache_depth' => 5, } + +type = File +dirName = /var/lib/lemonldap-ng/conf +localStorage = Cache::FileCache +localStorageOptions = { 'namespace' => 'MyNamespace', 'default_expires_in' => 600, 'directory_umask' => '007', 'cache_root' => '/tmp', 'cache_depth' => 5, } diff --git a/build/lemonldap-ng/_example/etc/lemonldap-ng/apache-session-mysql.sql b/modules/lemonldap-ng-common/tools/apache-session-mysql.sql similarity index 100% rename from build/lemonldap-ng/_example/etc/lemonldap-ng/apache-session-mysql.sql rename to modules/lemonldap-ng-common/tools/apache-session-mysql.sql diff --git a/build/lemonldap-ng/_example/etc/lemonldap-ng/lmConfig.mysql b/modules/lemonldap-ng-common/tools/lmConfig.mysql similarity index 100% rename from build/lemonldap-ng/_example/etc/lemonldap-ng/lmConfig.mysql rename to modules/lemonldap-ng-common/tools/lmConfig.mysql diff --git a/modules/lemonldap-ng-handler/example/MyHandler.pm b/modules/lemonldap-ng-handler/example/MyHandler.pm index 2e1f516d7..24699c317 100644 --- a/modules/lemonldap-ng-handler/example/MyHandler.pm +++ b/modules/lemonldap-ng-handler/example/MyHandler.pm @@ -3,20 +3,6 @@ use Lemonldap::NG::Handler::SharedConf; @ISA = qw(Lemonldap::NG::Handler::SharedConf); __PACKAGE__->init ( { - localStorage => "Cache::FileCache", - localStorageOptions => { - 'namespace' => 'MyNamespace', - 'default_expires_in' => 600, - 'directory_umask' => '007', - 'cache_root' => '/tmp', - 'cache_depth' => 5, - }, - - configStorage => { - type => 'File', - dirName => '__CONFDIR__', - }, - https => 0, # Uncomment this to activate status module # status => 1, diff --git a/modules/lemonldap-ng-handler/example/MyHandlerLog4Perl.pm b/modules/lemonldap-ng-handler/example/MyHandlerLog4Perl.pm index bb453c785..cbb9e8827 100644 --- a/modules/lemonldap-ng-handler/example/MyHandlerLog4Perl.pm +++ b/modules/lemonldap-ng-handler/example/MyHandlerLog4Perl.pm @@ -4,20 +4,6 @@ use Lemonldap::NG::Handler::SharedConf; __PACKAGE__->init( { - localStorage => "Cache::FileCache", - localStorageOptions => { - 'namespace' => 'MyNamespace', - 'default_expires_in' => 600, - 'directory_umask' => '007', - 'cache_root' => '/tmp', - 'cache_depth' => 5, - }, - - configStorage => { - type => 'File', - dirName => '__CONFDIR__', - }, - https => 0, # Uncomment this to activate status module # status => 1, diff --git a/modules/lemonldap-ng-handler/example/autoProtectedCGI.pl b/modules/lemonldap-ng-handler/example/autoProtectedCGI.pl index d1c544332..4fc31df97 100644 --- a/modules/lemonldap-ng-handler/example/autoProtectedCGI.pl +++ b/modules/lemonldap-ng-handler/example/autoProtectedCGI.pl @@ -1,15 +1,6 @@ #!/usr/bin/perl my $cgi = new Lemonldap::NG::Handler::CGI ( { - localStorage => "Cache::FileCache", - localStorageOptions => { - 'namespace' => 'MyNamespace', - 'default_expires_in' => 600, - }, - configStorage => { - type => 'File', - dirName => '__CONFDIR__', - }, https => 0, } ); diff --git a/modules/lemonldap-ng-handler/example/menu.pl b/modules/lemonldap-ng-handler/example/menu.pl index 2e9762474..12dcdbeae 100644 --- a/modules/lemonldap-ng-handler/example/menu.pl +++ b/modules/lemonldap-ng-handler/example/menu.pl @@ -22,21 +22,6 @@ use strict; our $cgi; $cgi = Lemonldap::NG::Handler::CGI->new( { - localStorage => "Cache::FileCache", - localStorageOptions => { - 'namespace' => 'MyNamespace', - 'default_expires_in' => 600, - 'directory_umask' => '007', - 'cache_root' => '/tmp', - 'cache_depth' => 5, - }, - # DEBIAN USERS : use this instead of classic configStorage - #configStorage => $Lemonldap::NG::Conf::configStorage, - configStorage => { - type => 'File', - dirName => '__CONFDIR__', - }, - https => 0, } ) or die; diff --git a/modules/lemonldap-ng-manager/MANIFEST b/modules/lemonldap-ng-manager/MANIFEST index d2f27ce83..666031b8f 100644 --- a/modules/lemonldap-ng-manager/MANIFEST +++ b/modules/lemonldap-ng-manager/MANIFEST @@ -71,11 +71,9 @@ example/imgs/tombs_mag.gif example/index.pl example/jquery.js example/lemonldap-ng-manager.js -example/lmConfig.mysql example/mrtg/lmng-mrtg example/mrtg/mrtg.cfg.example example/scripts/lmConfigEditor -example/scripts/lmSessionDump example/sessions.pl example/soapserver.pl example/theme/default.css diff --git a/modules/lemonldap-ng-manager/example/index.pl b/modules/lemonldap-ng-manager/example/index.pl index cc0c2541d..4a921f51d 100644 --- a/modules/lemonldap-ng-manager/example/index.pl +++ b/modules/lemonldap-ng-manager/example/index.pl @@ -4,12 +4,8 @@ use Lemonldap::NG::Manager; my $h = new Lemonldap::NG::Manager( { - configStorage => { - type => 'File', - dirName => "__CONFDIR__", - }, dhtmlXTreeImageLocation => "/imgs/", - applyConfFile => '__DIR__/manager/apply.conf', + applyConfFile => '__APPLYCONFFILE__', cssFile => 'theme/default.css', textareaW => 50, textareaH => 2, diff --git a/modules/lemonldap-ng-manager/example/lmConfig.mysql b/modules/lemonldap-ng-manager/example/lmConfig.mysql deleted file mode 100644 index b3c594824..000000000 --- a/modules/lemonldap-ng-manager/example/lmConfig.mysql +++ /dev/null @@ -1,22 +0,0 @@ -CREATE TABLE lmConfig ( - cfgNum int not null primary key, - locationRules text, - exportedHeaders text, - globalStorage text, - globalStorageOptions text, - macros text, - groups text, - portal text, - domain text, - ldapServer text, - ldapPort int, - ldapBase text, - securedCookie int, - cookieName text, - authentication text, - exportedVars text, - managerDn text, - managerPassword text, - timeout int, - whatToTrace text - ); diff --git a/modules/lemonldap-ng-manager/example/scripts/lmConfigEditor b/modules/lemonldap-ng-manager/example/scripts/lmConfigEditor index 7a5ab0290..2cf1025db 100644 --- a/modules/lemonldap-ng-manager/example/scripts/lmConfigEditor +++ b/modules/lemonldap-ng-manager/example/scripts/lmConfigEditor @@ -11,12 +11,7 @@ our $editFile = `mktemp`; chomp $refFile; chomp $editFile; -my $conf = Lemonldap::NG::Common::Conf->new( - { - type => 'File', - dirName => '__CONFDIR__', - } -); +my $conf = Lemonldap::NG::Common::Conf->new(); open F1, ">$refFile" or quit($!); open F2, ">$editFile" or quit($!); diff --git a/modules/lemonldap-ng-manager/example/scripts/lmSessionDump b/modules/lemonldap-ng-manager/example/scripts/lmSessionDump deleted file mode 100644 index 54ecf86f0..000000000 --- a/modules/lemonldap-ng-manager/example/scripts/lmSessionDump +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/perl - -# Set here the session storage you use -$sessionStorage = 'Apache::Session::File'; -$sessionStorageOptions = { - Directory => '__SESSIONDIR__', -}; - -############ -usage() unless($ARGV[0]); - -eval "use $sessionStorage"; -die $@ if($@); - -tie %h, $sessionStorage, $ARGV[0], $sessionStorageOptions; - -print "Attributes and macros :\n"; -my @t = sort keys(%h); -print "$_ " foreach(@t); -print "\n"; -foreach my $k ( sort keys(%h) ) { - next if($k eq 'groups'); - print "\t$k\t=> $h{$k}\n"; -} - -if( $h{groups} ) { - print "Groups :\n"; - print "\t$_\n" foreach( sort split /\s+/, $h{groups} ); -} diff --git a/modules/lemonldap-ng-manager/example/sessions.pl b/modules/lemonldap-ng-manager/example/sessions.pl index 6f1fc781a..c185011a0 100644 --- a/modules/lemonldap-ng-manager/example/sessions.pl +++ b/modules/lemonldap-ng-manager/example/sessions.pl @@ -5,20 +5,6 @@ use strict; use Lemonldap::NG::Manager::Sessions; our $cgi = Lemonldap::NG::Manager::Sessions->new({ - localStorage => "Cache::FileCache", - localStorageOptions => { - 'namespace' => 'MyNamespace', - 'default_expires_in' => 600, - 'directory_umask' => '007', - 'cache_root' => '/tmp', - 'cache_depth' => 5, - }, - # Use configStorage with Debian - #configStorage => $Lemonldap::NG::Conf::configStorage, - configStorage => { - type => 'File', - dirName => "__CONFDIR__", - }, https => 0, jqueryUri => 'jquery.js', imagePath => '/images/', diff --git a/modules/lemonldap-ng-manager/example/soapserver.pl b/modules/lemonldap-ng-manager/example/soapserver.pl index 03199f038..ea11321c8 100755 --- a/modules/lemonldap-ng-manager/example/soapserver.pl +++ b/modules/lemonldap-ng-manager/example/soapserver.pl @@ -2,11 +2,6 @@ use Lemonldap::NG::Manager::SOAPServer; -Lemonldap::NG::Manager::SOAPServer->start( - configStorage => { - type => "File", - dirName => "__CONFDIR__" - } -); +Lemonldap::NG::Manager::SOAPServer->start(); __END__ diff --git a/modules/lemonldap-ng-portal/example/AuthLA/index.pl b/modules/lemonldap-ng-portal/example/AuthLA/index.pl index 256185381..42c62f65e 100644 --- a/modules/lemonldap-ng-portal/example/AuthLA/index.pl +++ b/modules/lemonldap-ng-portal/example/AuthLA/index.pl @@ -10,11 +10,6 @@ use Lemonldap::NG::Portal::AuthLA; my $portal = Lemonldap::NG::Portal::AuthLA->new( { - configStorage => { - type => 'File', - dirName => '__CONFDIR__', - }, - # Liberty Parameters laSp => { certificate => "__DIR__/ressources/lemonsp-key-public.pem", diff --git a/modules/lemonldap-ng-portal/example/PortalStatus.pl b/modules/lemonldap-ng-portal/example/PortalStatus.pl index 3a98bc6c7..6c179d7e0 100755 --- a/modules/lemonldap-ng-portal/example/PortalStatus.pl +++ b/modules/lemonldap-ng-portal/example/PortalStatus.pl @@ -80,12 +80,7 @@ print $cgi->header( print "LEMONLDAP::NG::PORTAL STATUS\n\nConfiguration : "; -my $lmconf = Lemonldap::NG::Common::Conf->new( - { - type => 'File', - dirName => '__CONFDIR__', - } -); +my $lmconf = Lemonldap::NG::Common::Conf->new(); unless ($lmconf) { print "unable to create conf object\n"; diff --git a/modules/lemonldap-ng-portal/example/error.pl b/modules/lemonldap-ng-portal/example/error.pl index 8146ce1a6..4f7c0136b 100755 --- a/modules/lemonldap-ng-portal/example/error.pl +++ b/modules/lemonldap-ng-portal/example/error.pl @@ -3,15 +3,9 @@ use Lemonldap::NG::Portal::Error; use HTML::Template; my $skin = "pastel"; -my $skin_dir = "__DIR__/portal/skins/"; +my $skin_dir = "__SKINDIR__"; -my $portal = Lemonldap::NG::Portal::Error->new( - { - configStorage => { - type => 'File', - dirName => '__CONFDIR__', - }, - }); +my $portal = Lemonldap::NG::Portal::Error->new(); my $portal_url = $portal->getPortal; my $logout_url = "$portal_url?logout=1"; diff --git a/modules/lemonldap-ng-portal/example/index_simple.pl b/modules/lemonldap-ng-portal/example/index_simple.pl index 8464abdd0..5d980d26d 100644 --- a/modules/lemonldap-ng-portal/example/index_simple.pl +++ b/modules/lemonldap-ng-portal/example/index_simple.pl @@ -4,13 +4,9 @@ use Lemonldap::NG::Portal::SharedConf; my $portal = Lemonldap::NG::Portal::SharedConf->new( { - configStorage => { - type => 'File', - dirName => '__CONFDIR__', - }, #ldapPpolicyControl => 1, # Remove comment to use LDAP Password Policy #storePassword => 1, # Remove comment to store password in session (use with caution) - #Soap => 1, # Remove comment to activate SOAP Function getCookies(user,pwd) + #Soap => 1, # Remove comment to activate SOAP Function getCookies(user,pwd) } ); diff --git a/modules/lemonldap-ng-portal/example/index_skin.pl b/modules/lemonldap-ng-portal/example/index_skin.pl index 4171adb80..c5a801fbb 100644 --- a/modules/lemonldap-ng-portal/example/index_skin.pl +++ b/modules/lemonldap-ng-portal/example/index_skin.pl @@ -5,20 +5,15 @@ use HTML::Template; # Path configuration my $skin = "pastel"; -my $skin_dir = "__DIR__/portal/skins"; -my $appsxmlfile = "__SYSCONFDIR__/apps-list.xml"; +my $skin_dir = "__SKINDIR__"; +my $appsxmlfile = "__APPSXMLFILE__"; my $appsimgpath = "apps/"; my $portal = Lemonldap::NG::Portal::SharedConf->new( { - configStorage => { - type => 'File', - dirName => '__CONFDIR__', - }, - existingSession => sub { PE_DONE }, # Required to display the menu to a connected user #ldapPpolicyControl => 1, # Remove comment to use LDAP Password Policy #storePassword => 1, # Remove comment to store password in session (use with caution) - #Soap => 1, # Remove comment to activate SOAP Function getCookies(user,pwd) + #Soap => 1, # Remove comment to activate SOAP Function getCookies(user,pwd) } ); diff --git a/modules/lemonldap-ng-portal/example/scripts/purgeCentralCache b/modules/lemonldap-ng-portal/example/scripts/purgeCentralCache index c9f956dfa..90af75096 100755 --- a/modules/lemonldap-ng-portal/example/scripts/purgeCentralCache +++ b/modules/lemonldap-ng-portal/example/scripts/purgeCentralCache @@ -9,12 +9,7 @@ use Lemonldap::NG::Common::Conf::Constants; use Lemonldap::NG::Common::Apache::Session; use strict; -my $lmconf = Lemonldap::NG::Common::Conf->new( - { - type => 'File', - dirName => '__CONFDIR__', - } -); +my $lmconf = Lemonldap::NG::Common::Conf->new(); my $conf = $lmconf->getConf or die "Unable to get configuration ($!)"; diff --git a/modules/lemonldap-ng-portal/example/slavePortal.pl b/modules/lemonldap-ng-portal/example/slavePortal.pl index 19fba6237..935615732 100755 --- a/modules/lemonldap-ng-portal/example/slavePortal.pl +++ b/modules/lemonldap-ng-portal/example/slavePortal.pl @@ -40,13 +40,6 @@ use Lemonldap::NG::Portal::CDA; my $portal = Lemonldap::NG::Portal::CDA->new( { - - # configStorage ADAPT IT as usual - configStorage => { - type => 'File', - dirName => '__CONFDIR__', - }, - # SUBROUTINES OVERLOAD # 2 cases : # 1 - If LDAP search is not needed (the master SSO gives all