diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cbb3a13
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+*.rpm
+*.log
+*spec-20*
+*.tar.gz
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..aae781b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,21 @@
+# Makefile for source rpm: smeserver-lemonldap-ng
+# $Id: Makefile,v 1.1 2022/08/20 03:50:58 jpp Exp $
+NAME := smeserver-lemonldap-ng
+SPECFILE = $(firstword $(wildcard *.spec))
+
+define find-makefile-common
+for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
+endef
+
+MAKEFILE_COMMON := $(shell $(find-makefile-common))
+
+ifeq ($(MAKEFILE_COMMON),)
+# attept a checkout
+define checkout-makefile-common
+test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
+endef
+
+MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
+endif
+
+include $(MAKEFILE_COMMON)
diff --git a/README.md b/README.md
index 18b6e6b..eca53b8 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,16 @@
-# smeserver-lemonldap-ng
+# smeserver-lemonldap-ng
-SMEServer Koozali developed git repo for smeserver-lemonldap-ng smecontribs
\ No newline at end of file
+SMEServer Koozali developed git repo for smeserver-lemonldap-ng smecontribs
+
+## Wiki
+
https://wiki.koozali.org/LemonLDAP-NG
+
https://wiki.koozali.org/LemonLDAP-NG/fr
+
+## Bugzilla
+Show list of outstanding bugs: [here](https://bugs.koozali.org/buglist.cgi?component=smeserver-lemonldap-ng&product=SME%20Contribs&query_format=advanced&limit=0&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=CONFIRMED)
+
+## Description
+
+
*This description has been generated by an LLM AI system and cannot be relied on to be fully correct.*
+*Once it has been checked, then this comment will be deleted*
+
diff --git a/additional/.tito/packages/.readme b/additional/.tito/packages/.readme
new file mode 100644
index 0000000..b9411e2
--- /dev/null
+++ b/additional/.tito/packages/.readme
@@ -0,0 +1,3 @@
+the .tito/packages directory contains metadata files
+named after their packages. Each file has the latest tagged
+version and the project's relative directory.
diff --git a/additional/.tito/packages/smeserver-lemonldap-ng b/additional/.tito/packages/smeserver-lemonldap-ng
new file mode 100644
index 0000000..1590257
--- /dev/null
+++ b/additional/.tito/packages/smeserver-lemonldap-ng
@@ -0,0 +1 @@
+0.2.20-1 ./
diff --git a/additional/.tito/releasers.conf b/additional/.tito/releasers.conf
new file mode 120000
index 0000000..867c32f
--- /dev/null
+++ b/additional/.tito/releasers.conf
@@ -0,0 +1 @@
+../../tito_libs/releasers.conf
\ No newline at end of file
diff --git a/additional/.tito/tito.props b/additional/.tito/tito.props
new file mode 100644
index 0000000..3c97442
--- /dev/null
+++ b/additional/.tito/tito.props
@@ -0,0 +1,6 @@
+[buildconfig]
+builder = tito.builder.Builder
+tagger = tito.tagger.VersionTagger
+changelog_do_not_remove_cherrypick = 0
+changelog_format = %s (%ae)
+lib_dir = ../tito_libs
diff --git a/additional/smeserver-lemonldap-ng.spec b/additional/smeserver-lemonldap-ng.spec
new file mode 100644
index 0000000..58b1e12
--- /dev/null
+++ b/additional/smeserver-lemonldap-ng.spec
@@ -0,0 +1,204 @@
+# Authority: vip-ire
+# Name: Daniel Berteaud
+
+Summary: LemonLDAP NG is a web SSO solution
+%define name smeserver-lemonldap-ng
+Name: %{name}
+%define version 0.2.19
+%define release 1
+Version: 0.2.20
+Release: 1%{?dist}
+License: GPL
+Group: SME Server
+Source: %{name}-%{version}.tar.gz
+
+BuildArchitectures: noarch
+
+BuildRequires: e-smith-devtools
+BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot
+
+Requires: e-smith-base >= 5.2.0-56
+Requires: e-smith-ldap
+Requires: smeserver-webapps-common >= 0.1-8
+Requires: lemonldap-ng >= 1.4.1
+Requires: lemonldap-ng-fr-doc
+Requires: perl(Authen::Captcha)
+
+%description
+This package contains all the needed scripts and templates
+to run LemonLDAP NG on your SME Server. It uses LDAP as authentication source
+but can also use SSL auth (either optional with a fallback to LDAP, or SSL required)
+
+%changelog
+* Tue Sep 03 2019 Daniel Berteaud 0.2.20-1
+- Bump version
+
+* Tue Sep 03 2019 Daniel Berteaud 0.2.19-1
+- new package built with tito
+
+* Wed Feb 15 2017 Daniel Berteaud 0.2.19-1.sme
+- Set Access-Control-Allow-Origin on CAS endpoint, need for ticket renew in SOGo
+
+* Mon Jan 9 2017 Daniel Berteaud 0.2.18-1.sme
+- Update httpd template to read the Authentication prop of domain to load
+ Lemonldap::NG handler
+
+* Wed Dec 7 2016 Daniel Berteaud 0.2.17-1.sme
+- Replace My::Package with Lemonldap::NG::Handler in default vhost templates
+
+* Sat Jan 23 2016 Daniel Berteaud 0.2.16-1.sme
+- Don't redirect to https for acme challenges
+
+* Wed Oct 14 2015 Daniel Berteaud 0.2.15-1.sme
+- Fix DL icon size
+
+* Fri Sep 5 2014 Daniel Berteaud 0.2.14-1.sme
+- Define localSessionStorage to prevent clashes between handlers
+
+* Wed Jul 30 2014 Daniel Berteaud 0.2.13-1.sme
+- Add icons for mailman and phplist
+
+* Tue Jul 1 2014 Daniel Berteaud 0.2.12-1.sme
+- Adapt for LL::NG 1.4.1 (1.4.0 was too buggy)
+
+* Wed Dec 11 2013 Daniel Berteaud 0.2.11-1.sme
+- Add an icon for DL
+
+* Wed Nov 20 2013 Daniel Berteaud 0.2.10-1.sme
+- Add an icon for pydio
+
+* Mon Nov 18 2013 Daniel Berteaud 0.2.9-1.sme
+- Add two new icons (rdv.png and survey.png)
+
+* Wed Nov 13 2013 Daniel Berteaud 0.2.8-1.sme
+- compatibility with SME9 (perl lib path)
+
+* Mon Nov 4 2013 Daniel Berteaud 0.2.7-1.sme
+- Requires perl(Authen::Captcha) for LL::NG 1.3.0
+
+* Tue Sep 17 2013 Daniel Berteaud 0.2.6-1.sme
+- Small modifications to support SOGo CAS auth
+- Enable CAS auth
+
+* Wed Aug 21 2013 Daniel Berteaud 0.2.5-1.sme
+- Move custom icons to the correct directory
+
+* Wed Aug 21 2013 Daniel Berteaud 0.2.4-1.sme
+- Add custom icons for the portal
+
+* Tue Sep 4 2012 Daniel Berteaud 0.2.3-1.sme
+- Use Authentication prop instead of LemonLDAP
+
+* Wed Jun 20 2012 Daniel Berteaud 0.2.2-1.sme
+- Redirect to HTTPS on port 443
+
+* Wed Jun 20 2012 Daniel Berteaud 0.2.1-1.sme
+- Add optional floating menu per vhost
+
+* Wed Jun 20 2012 Daniel Berteaud 0.2.0-1.sme
+- Import in GIT
+- Remove the grantSessionRule param
+- Log via syslog (auth)
+
+* Mon Dec 19 2011 Daniel Berteaud 0.1-22.sme
+- Change SSL Auth to work with LocationMatch, so CAS proxy can work with
+ SSL Auth enabled
+
+* Wed Jul 13 2011 Daniel Berteaud 0.1-21.sme
+- Disable password reset form
+
+* Wed Jul 13 2011 Daniel Berteaud 0.1-20.sme
+- Fix uninitilized values in lemonldap conf templates
+
+* Mon Jul 11 2011 Daniel Berteaud 0.1-19.sme
+- reserve /lm-reload
+
+* Sun Jul 10 2011 Daniel Berteaud 0.1-18.sme
+- Fix notification check
+
+* Sat Jul 09 2011 Daniel Berteaud 0.1-17.sme
+- Don't force notifications on
+
+* Fri Jul 08 2011 Daniel Berteaud 0.1-16.sme
+- Enable and configure notifications
+
+* Thu Jun 30 2011 Daniel Berteaud 0.1-15.sme
+- Manage some configuration from the DB
+
+* Fri Mar 11 2011 Daniel Berteaud 0.1-14.sme
+- Make LemonLDAP compatible with ocsinventory-ng
+
+* Mon Mar 7 2011 Daniel Berteaud 0.1-13.sme
+- Add support for SSL Auth on the portal
+- Use a separated vhost for SOAP requests
+
+* Tue Feb 1 2011 Daniel Berteaud 0.1-12.sme
+- Requires recent version of smeserver-webapps-common
+- Switch to LDAP based auth to protect the manager
+
+* Tue Jan 25 2011 Daniel Berteaud 0.1-11.sme
+- Fix a spacing issue in httpd templates
+
+* Fri Jan 21 2011 Daniel Berteaud 0.1-10.sme
+- Add SSLEngine directives in https virtualhosts
+
+* Fri Jan 21 2011 Daniel Berteaud 0.1-9.sme
+- Fix empty SoapPassword
+
+* Thu Jan 06 2011 Daniel Berteaud 0.1-8.sme
+- Fix Soap ressources authentication
+
+* Mon Jan 03 2011 Daniel Berteaud 0.1-7.sme
+- Run the manager as a perl script (instead of CGI mode)
+
+* Mon Jan 03 2011 Daniel Berteaud 0.1-6.sme
+- Use https links for error pages
+
+* Thu Dec 30 2010 Daniel Berteaud 0.1-5.sme
+- use only alphanumeric characters for soap password
+- use htpasswd to hash the password
+
+* Tue Dec 28 2010 Daniel Berteaud 0.1-4.sme
+- don't load mod_auth_external if not needed
+- move cache dir in /var/cache
+- Fix several hosts listed in SoapAllowFrom
+
+* Fri Dec 24 2010 Daniel Berteaud 0.1-3.sme
+- Use htpasswd file to protect SOAP services
+- Configure session storage in lemonldap-ng.ini
+- Support additionnal server reload URL
+
+* Fri Dec 17 2010 Daniel Berteaud 0.1-2.sme
+- Let the manager be self-protected if ManagerAuth eq self
+
+* Thu Dec 16 2010 Daniel Berteaud 0.1-1.sme
+- initial public release
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%build
+perl createlinks
+%{__mkdir_p} root/var/cache/lemonldap-ng
+%{__mkdir_p} root/var/lib/lemonldap-ng/notifications
+
+%install
+/bin/rm -rf $RPM_BUILD_ROOT
+(cd root ; /usr/bin/find . -depth -print | /bin/cpio -dump $RPM_BUILD_ROOT)
+/bin/rm -f %{name}-%{version}-filelist
+/sbin/e-smith/genfilelist $RPM_BUILD_ROOT \
+ --dir /var/cache/lemonldap-ng 'attr(0770,root,www)' \
+ --dir /var/lib/lemonldap-ng/notifications 'attr(0770,root,www)' \
+ > %{name}-%{version}-filelist
+
+%files -f %{name}-%{version}-filelist
+%defattr(-,root,root)
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+
+%preun
+
+true
diff --git a/contriborbase b/contriborbase
new file mode 100644
index 0000000..9b7fd51
--- /dev/null
+++ b/contriborbase
@@ -0,0 +1 @@
+contribs10
diff --git a/createlinks b/createlinks
new file mode 100644
index 0000000..df27905
--- /dev/null
+++ b/createlinks
@@ -0,0 +1,14 @@
+#!/usr/bin/perl -w
+
+use esmith::Build::CreateLinks qw(:all);
+
+templates2events("/etc/lemonldap-ng/lemonldap-ng.ini", qw/webapps-update bootstrap-console-save/);
+templates2events("/etc/lemonldap-ng/soap-htpasswd", qw/webapps-update bootstrap-console-save/);
+
+event_link("lemonldap-init-domains", "webapps-update", "20");
+foreach my $event (qw/webapps-update network-create network-delete bootstrap-ldap-save remoteaccess-update/){
+ event_link("lemonldap-update-conf", "$event", "25");
+}
+
+safe_touch("root/etc/e-smith/templates/etc/lemonldap-ng/soap-htpasswd/template-begin");
+
diff --git a/root/etc/e-smith/db/accounts/defaults/lm-reload/type b/root/etc/e-smith/db/accounts/defaults/lm-reload/type
new file mode 100644
index 0000000..96cdd3b
--- /dev/null
+++ b/root/etc/e-smith/db/accounts/defaults/lm-reload/type
@@ -0,0 +1 @@
+url
diff --git a/root/etc/e-smith/db/configuration/defaults/lemonldap/status b/root/etc/e-smith/db/configuration/defaults/lemonldap/status
new file mode 100644
index 0000000..86981e6
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/lemonldap/status
@@ -0,0 +1 @@
+enabled
diff --git a/root/etc/e-smith/db/configuration/defaults/lemonldap/type b/root/etc/e-smith/db/configuration/defaults/lemonldap/type
new file mode 100644
index 0000000..24e1098
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/lemonldap/type
@@ -0,0 +1 @@
+service
diff --git a/root/etc/e-smith/db/configuration/migrate/90MigrateLemonLDAP b/root/etc/e-smith/db/configuration/migrate/90MigrateLemonLDAP
new file mode 100644
index 0000000..b1e36df
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/migrate/90MigrateLemonLDAP
@@ -0,0 +1,14 @@
+{
+
+use esmith::DomainsDB;
+my $d = esmith::DomainsDB->open() or die "Couldn't open DomainsDB\n";
+
+foreach my $domain ($d->domains){
+ my $llng = $domain->prop('LemonLDAP') || '';
+ next unless $llng eq 'enabled';
+ $domain->set_prop('Authentication', 'LemonLDAP');
+ $domain->delete_prop('LemonLDAP');
+}
+
+}
+
diff --git a/root/etc/e-smith/db/configuration/migrate/lemonldap-enable-mod_perl b/root/etc/e-smith/db/configuration/migrate/lemonldap-enable-mod_perl
new file mode 100644
index 0000000..357b79f
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/migrate/lemonldap-enable-mod_perl
@@ -0,0 +1,12 @@
+{
+
+ my $mp = $DB->get('modPerl') || $DB->new_record("modPerl", { type => "service", status => "enabled" });
+
+ if ( ($mp->prop('status') || 'disabled') eq 'enabled'){
+ return "";
+ }
+ else{
+ $DB->set_prop('modPerl', 'status', 'enabled');
+ }
+
+}
diff --git a/root/etc/e-smith/db/configuration/migrate/lemonldap-soappasswd b/root/etc/e-smith/db/configuration/migrate/lemonldap-soappasswd
new file mode 100644
index 0000000..2da183b
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/migrate/lemonldap-soappasswd
@@ -0,0 +1,13 @@
+{
+
+my $rec = $DB->get('lemonldap')
+ || $DB->new_record('lemonldap', {type => 'service'});
+
+my $pw = $rec->prop('SoapPassword');
+
+if (not $pw){
+ my $rand = `/usr/bin/openssl rand -base64 35 | tr -cd '[:alnum:]'`;
+ $rec->set_prop('SoapPassword', "$rand");
+}
+
+}
diff --git a/root/etc/e-smith/events/actions/lemonldap-init-domains b/root/etc/e-smith/events/actions/lemonldap-init-domains
new file mode 100644
index 0000000..f6d7c38
--- /dev/null
+++ b/root/etc/e-smith/events/actions/lemonldap-init-domains
@@ -0,0 +1,88 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+# copyright (C) 2010 Firewall-Services
+# daniel@firewall-services.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Technical support for this program is available from Mitel Networks
+# Please visit our web site www.mitel.com/sme/ for details.
+#----------------------------------------------------------------------
+
+use strict;
+use warnings;
+use esmith::DomainsDB;
+use esmith::ConfigDB;
+
+my $d = esmith::DomainsDB->open or die "Couldn't open DomainsDB\n";
+my $c = esmith::ConfigDB->open_ro() or die "Couldn't open ConfigDB\n";
+
+my $domain = $c->get('DomainName')->value;
+my $vhost;
+
+$vhost = $d->get("sso-manager.$domain");
+
+if (!$vhost){
+ $d->new_record("sso-manager.$domain",{
+ type => 'domain',
+ Content => 'Primary',
+ Description => "LemonLDAP-NG Manager",
+ Nameservers => 'internet',
+ TemplatePath => 'LemonLDAPManager',
+ Removable => 'no',
+ });
+
+ unless ( system("/sbin/e-smith/signal-event", "domain-create", "sso-manager.$domain") == 0 ){
+ die "Failed to create domain sso-manager.$domain\n";
+ }
+}
+
+$vhost = $d->get("auth.$domain");
+
+if (!$vhost){
+ $d->new_record("auth.$domain",{
+ type => 'domain',
+ Content => 'Primary',
+ Description => "LemonLDAP-NG Portal",
+ Nameservers => 'internet',
+ TemplatePath => 'LemonLDAPPortal',
+ Removable => 'no',
+ });
+
+ unless ( system("/sbin/e-smith/signal-event", "domain-create", "auth.$domain") == 0 ){
+ die "Failed to create domain auth.$domain\n";
+ }
+}
+
+$vhost = $d->get("soapsso.$domain");
+
+if (!$vhost){
+ $d->new_record("soapsso.$domain",{
+ type => 'domain',
+ Content => 'Primary',
+ Description => "LemonLDAP-NG SOAP Handler",
+ Nameservers => 'internet',
+ TemplatePath => 'LemonLDAPSoap',
+ Removable => 'no',
+ });
+
+ unless ( system("/sbin/e-smith/signal-event", "domain-create", "soapsso.$domain") == 0 ){
+ die "Failed to create domain soapsso.$domain\n";
+ }
+}
+
+
+exit 0;
+
diff --git a/root/etc/e-smith/events/actions/lemonldap-update-conf b/root/etc/e-smith/events/actions/lemonldap-update-conf
new file mode 100644
index 0000000..217fa88
--- /dev/null
+++ b/root/etc/e-smith/events/actions/lemonldap-update-conf
@@ -0,0 +1,43 @@
+#!/usr/bin/perl -w
+#----------------------------------------------------------------------
+# copyright (C) 2011 Firewall-Services
+# daniel@firewall-services.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Technical support for this program is available from Mitel Networks
+# Please visit our web site www.mitel.com/sme/ for details.
+#----------------------------------------------------------------------
+
+use esmith::ConfigDB;
+use esmith::templates;
+
+my $c = esmith::ConfigDB->open_ro or die "Error opening ConfigDB\n";
+my $llng = $c->get('lemonldap');
+
+my $status = $llng->prop('status') || 'disabled';
+my $manual = $llng->prop('ManualConf') || 'disabled';
+
+# Don't touch the configuration if it's set to be manual
+# or if the service is disabled
+exit (0) if ($manual eq 'enabled' or $status ne 'enabled');
+
+processTemplate(
+ {
+ TEMPLATE_PATH => "/var/lib/lemonldap-ng/conf/lmConf",
+ OUTPUT_FILENAME => "/var/lib/lemonldap-ng/conf/lmConf",
+ });
+
+exit (0);
diff --git a/root/etc/e-smith/templates.metadata/etc/lemonldap-ng/lemonldap-ng.ini b/root/etc/e-smith/templates.metadata/etc/lemonldap-ng/lemonldap-ng.ini
new file mode 100644
index 0000000..bad4258
--- /dev/null
+++ b/root/etc/e-smith/templates.metadata/etc/lemonldap-ng/lemonldap-ng.ini
@@ -0,0 +1,3 @@
+PERMS=0640
+UID="root"
+GID="www"
diff --git a/root/etc/e-smith/templates.metadata/etc/lemonldap-ng/soap-htpasswd b/root/etc/e-smith/templates.metadata/etc/lemonldap-ng/soap-htpasswd
new file mode 100644
index 0000000..bad4258
--- /dev/null
+++ b/root/etc/e-smith/templates.metadata/etc/lemonldap-ng/soap-htpasswd
@@ -0,0 +1,3 @@
+PERMS=0640
+UID="root"
+GID="www"
diff --git a/root/etc/e-smith/templates.metadata/var/lib/lemonldap-ng/conf/lmConf-2 b/root/etc/e-smith/templates.metadata/var/lib/lemonldap-ng/conf/lmConf-2
new file mode 100644
index 0000000..7d87103
--- /dev/null
+++ b/root/etc/e-smith/templates.metadata/var/lib/lemonldap-ng/conf/lmConf-2
@@ -0,0 +1,3 @@
+PERMS=0640
+UID="www"
+GID="www"
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/97LemonLDAPHandler b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/97LemonLDAPHandler
new file mode 100644
index 0000000..7c54704
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/97LemonLDAPHandler
@@ -0,0 +1,34 @@
+#====================================================================
+# Apache configuration for LemonLDAP::NG Handler
+#====================================================================
+
+# Load LemonLDAP::NG Handler
+PerlOptions +GlobalRequest
+PerlRequire Lemonldap/NG/Handler.pm
+
+# Common error page and security parameters
+#ErrorDocument 403 http://auth.{$DomainName}/?lmError=403
+#ErrorDocument 500 http://auth.{$DomainName}/?lmError=500
+
+
+# Configuration reload mechanism (only 1 per physical server is
+# needed): choose your URL to avoid restarting Apache when
+# configuration change
+# Dummy Alias so apache allows access to /lm-reload
+Alias /lm-reload /etc/httpd/proxy/proxy.pac
+
+ SSLRequireSSL on
+ Order deny,allow
+ Deny from all
+ Allow from {"$LocalIP $localAccess $externalSSLAccess";}
+ PerlHeaderParserHandler Lemonldap::NG::Handler->refresh
+
+
+# Uncomment this to activate status module
+#
+# Order deny,allow
+# Deny from all
+# Allow from 127.0.0.0/8
+# PerlHeaderParserHandler Lemonldap::NG::Handler->status
+#
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/00Setup b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/00Setup
new file mode 100644
index 0000000..e00a95b
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/00Setup
@@ -0,0 +1,10 @@
+{
+ use esmith::DomainsDB;
+ # Convert the passed hash for the domain object back into an object.
+ $domain = bless \%domain, 'esmith::DB::db::Record';
+
+ # Make scalars from some of the properties of the domain
+ $virtualHost = $domain->key;
+ $OUT = "";
+}
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/10ServerName b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/10ServerName
new file mode 100644
index 0000000..38f4ddf
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/10ServerName
@@ -0,0 +1 @@
+ ServerName {$virtualHost}
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/80LemonLDAPManager b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/80LemonLDAPManager
new file mode 100644
index 0000000..316abce
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/80LemonLDAPManager
@@ -0,0 +1,114 @@
+{
+
+ use esmith::util;
+
+ if ( $port ne ($modSSL{'TCPPort'} || '443')){
+ $OUT .=<<"EOF";
+
+ #====================================================================
+ # HTTPS redirection for LemonLDAP::NG Manager
+ #====================================================================
+
+ RewriteEngine on
+ RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*
+ RewriteRule ^/(.*|\$) https://%{HTTP_HOST}/\$1 \[L,R\]
+EOF
+ }
+ else{
+ my $authtype = $lemonldap{'ManagerAuth'} || 'basic';
+ my $auth = '';
+ my $base = esmith::util::ldapBase($DomainName);
+
+ unless ( $authtype eq 'self' ) {
+ $auth = "AuthName 'LemonLDAP NG Manager Interface'\n" .
+ " AuthType Basic\n" .
+ " AuthBasicProvider ldap\n" .
+ " AuthLDAPURL ldap://localhost/ou=Users,$base?uid\n" .
+ " AuthLDAPGroupAttribute memberUid\n" .
+ " AuthLDAPGroupAttributeIsDN off\n" .
+ " require ldap-user admin";
+ }
+
+ $OUT .=<<"EOF";
+
+ SSLEngine On
+
+ PerlOptions +Parent
+
+ #====================================================================
+ # Apache configuration for LemonLDAP::NG Manager
+ #====================================================================
+
+ # DocumentRoot
+ DocumentRoot /var/lib/lemonldap-ng/manager/
+
+ Order deny,allow
+ Deny from all
+ Allow from $localAccess $externalSSLAccess
+ Options +ExecCGI +FollowSymlinks
+ $auth
+ Satisfy all
+
+
+ # On-line documentation
+ Alias /doc/ /var/lib/lemonldap-ng/doc/
+ Alias /fr-doc/ /var/lib/lemonldap-ng/fr-doc/
+ Alias /lib/ /var/lib/lemonldap-ng/doc/lib/
+
+ Order deny,allow
+ Allow from all
+ ErrorDocument 404 /notfound.html
+ Options +FollowSymlinks
+ DirectoryIndex index.pl index.html
+
+
+ Order deny,allow
+ Allow from all
+ ErrorDocument 404 /notfound.html
+ Options +FollowSymlinks
+ DirectoryIndex index.pl index.html
+
+
+ # Perl script
+ # Note: to avoid manager stay in memory, we don't use ModPerl::Registry
+ # by default. Change this to increase manager performances
+
+ #SetHandler cgi-script
+ SetHandler perl-script
+ PerlResponseHandler ModPerl::Registry
+
+
+ # Directory index
+
+ DirectoryIndex index.pl index.html
+
+
+
+
+ AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript text/css
+ SetOutputFilter DEFLATE
+ BrowserMatch ^Mozilla/4 gzip-only-text/html
+ BrowserMatch ^Mozilla/4\.0[678] no-gzip
+ BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
+ SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)\$ no-gzip dont-vary
+
+
+ Header append Vary User-Agent env=!dont-vary
+
+
+
+
+ ExpiresActive On
+ ExpiresDefault "access plus 1 month"
+
+
+
+
+ ExpiresActive On
+ ExpiresDefault "access plus 1 month"
+
+
+EOF
+ }
+}
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/template-begin b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/template-begin
new file mode 100644
index 0000000..b050035
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/template-begin
@@ -0,0 +1,2 @@
+
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/template-end b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/template-end
new file mode 100644
index 0000000..50d3d92
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPManager/template-end
@@ -0,0 +1,2 @@
+
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/00Setup b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/00Setup
new file mode 100644
index 0000000..e00a95b
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/00Setup
@@ -0,0 +1,10 @@
+{
+ use esmith::DomainsDB;
+ # Convert the passed hash for the domain object back into an object.
+ $domain = bless \%domain, 'esmith::DB::db::Record';
+
+ # Make scalars from some of the properties of the domain
+ $virtualHost = $domain->key;
+ $OUT = "";
+}
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/10ServerName b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/10ServerName
new file mode 100644
index 0000000..38f4ddf
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/10ServerName
@@ -0,0 +1 @@
+ ServerName {$virtualHost}
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/80LemonLDAPPortal b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/80LemonLDAPPortal
new file mode 100644
index 0000000..5057863
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/80LemonLDAPPortal
@@ -0,0 +1,133 @@
+{
+
+use esmith::AccountsDB;
+my $a = esmith::AccountsDB->open_ro() or die "Couldn't open AccountsDB\n";
+
+if ( $port ne ($modSSL{'TCPPort'} || '443')){
+ $OUT .=<<"EOF";
+
+ #====================================================================
+ # HTTPS redirection for LemonLDAP::NG Portal
+ #====================================================================
+
+ RewriteEngine on
+ RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*
+ RewriteRule ^/(.*|\$) https://%{HTTP_HOST}/\$1 \[L,R\]
+
+EOF
+ }
+else{
+
+ # SSL Authentication
+ my $SSLAuth = $lemonldap{'SSLAuth'} || 'disabled';
+ my $sslDirectives = ' # SSL Auth is disabled';
+ my $sogoWorkArround = '';
+ if ((-e '/etc/pki/tls/certs/cacert.pem') &&
+ ($SSLAuth =~ m/^(require)|(optional)$/)) {
+ $sslDirectives =<<"HERE";
+
+ SSLVerifyClient $SSLAuth
+ SSLVerifyDepth 1
+ SSLOptions +StdEnvVars
+ SSLUserName SSL_CLIENT_S_DN_CN
+
+HERE
+ }
+ if (-e '/usr/lib/perl5/site_perl/Apache/FilterChangeLength.pm' ||
+ -e '/usr/share/perl5/vendor_perl/Apache/FilterChangeLength.pm'){
+ # Looks like iPasserelle groupware is installed
+ # SOPE doesn't supports chunked encoding
+ # the following makes it happy
+ # see http://sogo.nu/bugs/view.php?id=2408
+ $sogoWorkArround =<<"HERE";
+
+ BrowserMatch "SOPE/" downgrade-1.0
+ PerlOutputFilterHandler Apache::FilterChangeLength
+ Header set Access-Control-Allow-Origin '*'
+
+HERE
+ }
+
+ $OUT .=<<"EOF";
+
+ SSLEngine On
+
+ PerlOptions +Parent
+
+ #====================================================================
+ # Apache configuration for LemonLDAP::NG Portal
+ #====================================================================
+
+ # DocumentRoot
+ DocumentRoot /var/lib/lemonldap-ng/portal/
+
+
+ require Lemonldap::NG::Portal::SharedConf;
+ Lemonldap::NG::Portal::SharedConf->compile(
+ qw(delete header cache read_from_client cookie redirect unescapeHTML));
+ # Uncomment this line if you use Lemonldap::NG menu
+ require Lemonldap::NG::Portal::Menu;
+
+
+
+ Order allow,deny
+ Allow from all
+ Options +ExecCGI +FollowSymlinks
+
+$sslDirectives
+$sogoWorkArround
+
+ # Perl script
+
+ SetHandler perl-script
+ PerlResponseHandler ModPerl::Registry
+
+
+
+ DirectoryIndex index.pl index.html
+
+
+ # SAML2 Issuer
+
+ RewriteEngine On
+ RewriteRule ^/saml/metadata /metadata.pl
+ RewriteRule ^/saml/.* /index.pl
+
+
+ # CAS Issuer
+
+ RewriteEngine On
+ RewriteRule ^/cas/.* /index.pl
+
+
+ # OpenID Issuer
+
+ RewriteEngine On
+ RewriteRule ^/openidserver/.* /index.pl
+
+
+
+
+ AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript text/css
+ SetOutputFilter DEFLATE
+ BrowserMatch ^Mozilla/4 gzip-only-text/html
+ BrowserMatch ^Mozilla/4\.0[678] no-gzip
+ BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
+ SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)\$ no-gzip dont-vary
+
+
+ Header append Vary User-Agent env=!dont-vary
+
+
+
+
+ ExpiresActive On
+ ExpiresDefault "access plus 1 month"
+
+
+
+EOF
+ }
+}
+
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/template-begin b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/template-begin
new file mode 100644
index 0000000..b050035
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/template-begin
@@ -0,0 +1,2 @@
+
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/template-end b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/template-end
new file mode 100644
index 0000000..50d3d92
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPPortal/template-end
@@ -0,0 +1,2 @@
+
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/00Setup b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/00Setup
new file mode 100644
index 0000000..e00a95b
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/00Setup
@@ -0,0 +1,10 @@
+{
+ use esmith::DomainsDB;
+ # Convert the passed hash for the domain object back into an object.
+ $domain = bless \%domain, 'esmith::DB::db::Record';
+
+ # Make scalars from some of the properties of the domain
+ $virtualHost = $domain->key;
+ $OUT = "";
+}
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/10ServerName b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/10ServerName
new file mode 100644
index 0000000..38f4ddf
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/10ServerName
@@ -0,0 +1 @@
+ ServerName {$virtualHost}
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/80LemonLDAPSoap b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/80LemonLDAPSoap
new file mode 100644
index 0000000..db48acd
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/80LemonLDAPSoap
@@ -0,0 +1,120 @@
+{
+
+use esmith::AccountsDB;
+my $a = esmith::AccountsDB->open_ro() or die "Couldn't open AccountsDB\n";
+
+if ( $port ne ($modSSL{'TCPPort'} || '443')){
+ $OUT .=<<"EOF";
+
+ #====================================================================
+ # HTTPS redirection for LemonLDAP::NG Portal
+ #====================================================================
+
+ RewriteEngine on
+ RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*
+ RewriteRule ^/(.*|\$) https://%{HTTP_HOST}/\$1 \[L,R\]
+
+EOF
+ }
+else{
+ my $soapAllow = join (" ", split(/[;,]/, ($lemonldap{'SoapAllowFrom'} || '')));
+ $soapAllow = ( $soapAllow eq '' ) ? '' : "Allow from $soapAllow\n ";
+ my $soapPassword = $lemonldap{'SoapPassword'} || '';
+ $soapAllow .= ($soapPassword eq '') ? '' :
+ 'AuthName "LemonLDAP SOAP interface"' . "\n " .
+ 'AuthType Basic' . "\n " .
+ 'AuthBasicProvider file' . "\n " .
+ 'AuthUserFile /etc/lemonldap-ng/soap-htpasswd' . "\n " .
+ 'Require valid-user' . "\n " .
+ 'Satisfy all';
+
+ $OUT .=<<"EOF";
+
+ SSLEngine On
+
+ PerlOptions +Parent
+
+ #====================================================================
+ # Apache configuration for LemonLDAP::NG Portal
+ #====================================================================
+
+ # DocumentRoot
+ DocumentRoot /var/lib/lemonldap-ng/portal/
+
+
+ require Lemonldap::NG::Portal::SharedConf;
+ Lemonldap::NG::Portal::SharedConf->compile(
+ qw(delete header cache read_from_client cookie redirect unescapeHTML));
+ # Uncomment this line if you use portal SOAP capabilities
+ require SOAP::Lite;
+
+
+
+ Order allow,deny
+ Allow from all
+ Options +ExecCGI +FollowSymlinks
+
+
+ # Perl script
+
+ SetHandler perl-script
+ PerlResponseHandler ModPerl::Registry
+
+
+
+ DirectoryIndex index.pl index.html
+
+
+ # SOAP functions for sessions management (disabled by default)
+
+ Order deny,allow
+ Deny from all
+ $soapAllow
+
+
+ # SOAP functions for sessions access (disabled by default)
+
+ Order deny,allow
+ Deny from all
+ $soapAllow
+
+
+ # SOAP functions for configuration access (disabled by default)
+
+ Order deny,allow
+ Deny from all
+ $soapAllow
+
+
+ # SOAP functions for notification insertion (disabled by default)
+
+ Order deny,allow
+ Deny from all
+ $soapAllow
+
+
+
+
+ AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript text/css
+ SetOutputFilter DEFLATE
+ BrowserMatch ^Mozilla/4 gzip-only-text/html
+ BrowserMatch ^Mozilla/4\.0[678] no-gzip
+ BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
+ SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)\$ no-gzip dont-vary
+
+
+ Header append Vary User-Agent env=!dont-vary
+
+
+
+
+ ExpiresActive On
+ ExpiresDefault "access plus 1 month"
+
+
+
+EOF
+ }
+}
+
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/template-begin b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/template-begin
new file mode 100644
index 0000000..b050035
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/template-begin
@@ -0,0 +1,2 @@
+
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/template-end b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/template-end
new file mode 100644
index 0000000..50d3d92
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/LemonLDAPSoap/template-end
@@ -0,0 +1,2 @@
+
+
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/VirtualHosts/05LemonLDAPHandler b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/VirtualHosts/05LemonLDAPHandler
new file mode 100644
index 0000000..dba812d
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/VirtualHosts/05LemonLDAPHandler
@@ -0,0 +1,21 @@
+{
+
+my $auth = $domain->prop('Authentication') || 'none';
+
+if (($modSSL{'TCPPort'} || '443') eq $port){
+ if ($auth eq 'LemonLDAP'){
+ $OUT .= " # This virtualhost is configured to be protected by LemonLDAP NG\n" .
+ " PerlHeaderParserHandler Lemonldap::NG::Handler\n" .
+ " ErrorDocument 403 https://auth.$DomainName/?lmError=403\n" .
+ " ErrorDocument 500 https://auth.$DomainName/?lmError=500\n";
+ if (($domain->prop('LemonLDAPMenu') || 'disabled') eq 'enabled'){
+ $OUT .= " PerlOutputFilterHandler Lemonldap::NG::Handler::Menu\n";
+ }
+ }
+ elsif ($auth eq 'LemonLDAPBasic'){
+ $OUT .= " # This virtualhost is configured to be protected by LemonLDAP NG (basic auth)\n" .
+ " PerlHeaderParserHandler Lemonldap::NG::Handler::Specific::AuthBasic\n";
+ }
+}
+
+}
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/05LemonLDAPHandler b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/05LemonLDAPHandler
new file mode 100644
index 0000000..dba812d
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/05LemonLDAPHandler
@@ -0,0 +1,21 @@
+{
+
+my $auth = $domain->prop('Authentication') || 'none';
+
+if (($modSSL{'TCPPort'} || '443') eq $port){
+ if ($auth eq 'LemonLDAP'){
+ $OUT .= " # This virtualhost is configured to be protected by LemonLDAP NG\n" .
+ " PerlHeaderParserHandler Lemonldap::NG::Handler\n" .
+ " ErrorDocument 403 https://auth.$DomainName/?lmError=403\n" .
+ " ErrorDocument 500 https://auth.$DomainName/?lmError=500\n";
+ if (($domain->prop('LemonLDAPMenu') || 'disabled') eq 'enabled'){
+ $OUT .= " PerlOutputFilterHandler Lemonldap::NG::Handler::Menu\n";
+ }
+ }
+ elsif ($auth eq 'LemonLDAPBasic'){
+ $OUT .= " # This virtualhost is configured to be protected by LemonLDAP NG (basic auth)\n" .
+ " PerlHeaderParserHandler Lemonldap::NG::Handler::Specific::AuthBasic\n";
+ }
+}
+
+}
diff --git a/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/00header b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/00header
new file mode 100644
index 0000000..3e401fc
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/00header
@@ -0,0 +1,19 @@
+#==============================================================================
+# LemonLDAP::NG local configuration parameters
+#
+# This file is dedicated to configuration parameters override
+# You can set here configuration parameters that will be used only by
+# local LemonLDAP::NG elements
+#
+# Section "all" is always read first before "portal", "handler"
+# and "manager"
+#
+# Section "configuration" is used to load global configuration and set cache
+# (replace old storage.conf file)
+#
+# Section "apply" is read by Manager to reload handlers
+# (replace old apply.conf file)
+#
+# Other section are only read by the specific LemonLDAP::NG component
+#==============================================================================
+
diff --git a/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/05All b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/05All
new file mode 100644
index 0000000..6c56932
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/05All
@@ -0,0 +1,7 @@
+
+[all]
+globalStorage = Apache::Session::File
+globalStorageOptions = \{ 'Directory' => '/var/lib/lemonldap-ng/sessions/', 'LockDirectory' => '/var/lib/lemonldap-ng/sessions/lock/', \}
+localSessionStorage=Cache::FileCache
+localSessionStorageOptions=\{ 'namespace' => 'sessions', 'default_expires_in' => '600', 'directory_umask' => '007', 'cache_root' => '/var/cache/lemonldap-ng', 'cache_depth' => 3, \}
+
diff --git a/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/10configuration b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/10configuration
new file mode 100644
index 0000000..49ee965
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/10configuration
@@ -0,0 +1,11 @@
+
+[configuration]
+
+type=File
+dirName = /var/lib/lemonldap-ng/conf
+globalStorageOptions=\{ 'generateModule' => 'Lemonldap::NG::Common::Apache::Session::Generate::SHA256' \}
+
+localStorage=Cache::FileCache
+localStorageOptions=\{ 'namespace' => 'localcache', 'default_expires_in' => 600, 'directory_umask' => '007', 'cache_root' => '/var/cache/lemonldap-ng', 'cache_depth' => 5, \}
+
+
diff --git a/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/15apply b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/15apply
new file mode 100644
index 0000000..5d44fe4
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/15apply
@@ -0,0 +1,11 @@
+[apply]
+
+{"$SystemName.$DomainName";} = https://{"$SystemName.$DomainName";}/lm-reload
+
+{
+
+foreach my $srv (split(/[;,]/, ($lemonldap{'Reload'} || ''))){
+ my ($name,$url) = split(/=/, $srv);
+ $OUT .= "$name = $url\n";
+}
+}
diff --git a/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/20manager b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/20manager
new file mode 100644
index 0000000..466001f
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/20manager
@@ -0,0 +1,10 @@
+
+[manager]
+{
+ $OUT .= (($lemonldap{'ManagerAuth'} || 'basic') eq 'self') ?
+ 'protection = manager' : '';
+}
+
+[sessionsExplorer]
+
+
diff --git a/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/25handler b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/25handler
new file mode 100644
index 0000000..0be2cb2
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/25handler
@@ -0,0 +1,6 @@
+[handler]
+
+https = 1
+status = 0
+useRedirectOnError = 1
+
diff --git a/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/30portal b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/30portal
new file mode 100644
index 0000000..2787e6a
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/lemonldap-ng/lemonldap-ng.ini/30portal
@@ -0,0 +1,3 @@
+
+[portal]
+
diff --git a/root/etc/e-smith/templates/etc/lemonldap-ng/soap-htpasswd/05lemonsoap b/root/etc/e-smith/templates/etc/lemonldap-ng/soap-htpasswd/05lemonsoap
new file mode 100644
index 0000000..807ffd0
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/lemonldap-ng/soap-htpasswd/05lemonsoap
@@ -0,0 +1,6 @@
+{
+ my $pw = $lemonldap{'SoapPassword'} || 'secret';
+ my $res = `/usr/bin/htpasswd -bnm lemonsoap $pw`;
+ chomp($res);
+ $OUT .= $res;
+}
diff --git a/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/000open b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/000open
new file mode 100644
index 0000000..f595815
--- /dev/null
+++ b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/000open
@@ -0,0 +1,31 @@
+{
+use esmith::ConfigDB;
+use esmith::DomainsDB;
+use esmith::NetworksDB;
+use esmith::util;
+use Lemonldap::NG::Common::Conf;
+
+$c = esmith::ConfigDB->open_ro or die "Error opening ConfigDB\n";
+$d = esmith::DomainsDB->open_ro or die "Error opening DomainsDB\n";
+$n = esmith::NetworksDB->open_ro or die "Error opening NetworksDB\n";
+$domain = $c->get('DomainName')->value;
+$host = $c->get('SystemName')->value;
+$base = esmith::util::ldapBase ($domain);
+$ldap = $c->get('ldap') || die "Error reading ldap service entry\n";
+$port = $ldap->prop('TCPPort') || '389';
+$llng = $c->get('lemonldap');
+
+$manual = $llng->prop('ManualConf') || 'disabled';
+
+$confAccess = new Lemonldap::NG::Common::Conf(
+ {
+ type=>'File',
+ dirName=>"/var/lib/lemonldap-ng/conf",
+ },
+) or die "Unable to build Lemonldap::NG::Common::Conf, see Apache logs\n";
+
+$conf = $confAccess->getConf();
+
+$OUT = '';
+
+}
diff --git a/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/005global b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/005global
new file mode 100644
index 0000000..c3f06ee
--- /dev/null
+++ b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/005global
@@ -0,0 +1,15 @@
+{
+
+# Global parameters
+$conf->{'domain'} = "$domain";
+$conf->{'portal'} = "https://auth.$domain/";
+$conf->{'storePassword'} = '0';
+$conf->{'portalUserAttr'} = 'cn' if (($conf->{'portalUserAttr'} || '_user') eq "_user");
+$conf->{'portalDisplayChangePassword'} = '0';
+$conf->{'syslog'} = 'auth';
+$conf->{'https'} = '1';
+$conf->{'port'} = '443';
+
+$OUT .= '';
+
+}
diff --git a/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/010ldap b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/010ldap
new file mode 100644
index 0000000..d5e2cd5
--- /dev/null
+++ b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/010ldap
@@ -0,0 +1,17 @@
+{
+
+# LDAP parameters
+$conf->{'passwordDB'} = 'LDAP';
+$conf->{'userDB'} = 'LDAP';
+$conf->{'ldapServer'} = 'localhost';
+$conf->{'ldapPort'} = "$port";
+$conf->{'ldapVersion'} = '3';
+$conf->{'ldapBase'} = "ou=Users,$base";
+$conf->{'ldapGroupBase'} = "ou=Groups,$base";
+$conf->{'ldapGroupAttributeNameUser'} = 'uid';
+$conf->{'ldapGroupAttributeNameSearch'} = 'cn';
+$conf->{'ldapGroupAttributeName'} = 'memberUid';
+$conf->{'ldapGroupObjectClass'} = 'mailboxRelatedObject';
+
+$OUT .= '';
+}
diff --git a/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/015soap b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/015soap
new file mode 100644
index 0000000..e0c61ea
--- /dev/null
+++ b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/015soap
@@ -0,0 +1,19 @@
+{
+
+# SOAP
+if (($llng->prop('SoapAllowFrom') || '') ne ''){
+ my $password = $llng->prop('SoapPassword') || 'secret';
+ $conf->{'Soap'} = '1';
+ $conf->{'globalStorage'} = 'Lemonldap::NG::Common::Apache::Session::SOAP';
+ $conf->{'globalStorageOptions'} = {
+ proxy => "https://lemonsoap:$password\@soapsso.$domain/index.pl/sessions",
+ generateModule => 'Lemonldap::NG::Common::Apache::Session::Generate::SHA256'
+ };
+}
+else {
+ $conf->{'Soap'} = '0';
+}
+
+$OUT = '';
+
+}
diff --git a/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/020auth b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/020auth
new file mode 100644
index 0000000..d0871a2
--- /dev/null
+++ b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/020auth
@@ -0,0 +1,34 @@
+{
+
+# SSL Auth
+my $ssl = $llng->prop('SSLAuth') || '';
+
+if ($ssl eq 'optional' || $ssl eq 'require'){
+ # SSL Auth is enabled
+ # Configure common attributes
+ $conf->{'SSLLDAPField'} = 'uid';
+ $conf->{'SSLVar'} = 'SSL_CLIENT_S_DN_CN';
+ $conf->{'SSLRequire'} = '1';
+
+ if ($ssl eq 'optional'){
+ $conf->{'authentication'} = 'Multi SSL;LDAP';
+ }
+ else{
+ $conf->{'authentication'} = 'SSL';
+ }
+}
+else{
+ $conf->{'authentication'} = 'LDAP';
+}
+
+# Enable CAS issuer DB
+$conf->{'issuerDBCASActivation'} = 1;
+
+# default cookie settings
+$conf->{'securedCookie'} = 1 unless ($conf->{'securedCookie'});
+$conf->{'httpOnly'} = 1 unless ($conf->{'httpOnly'});
+
+
+$OUT = '';
+
+}
diff --git a/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/025localnet b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/025localnet
new file mode 100644
index 0000000..fd76a08
--- /dev/null
+++ b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/025localnet
@@ -0,0 +1,45 @@
+{
+
+my $reg = '$ipAddr =~ /^';
+
+# Build a regexp to check if the client IP
+# is part of a local network
+# Then, we can easily use this macro to restrict
+# access to local networks on some applications
+my @net = ();
+
+foreach my $net ($n->networks){
+ my $addr = $net->key;
+ my $mask = $net->prop('Mask') || '255.255.255.255';
+ foreach (esmith::util::computeAllLocalNetworkPrefixes($addr,$mask)){
+ push @net, "($_)";
+ }
+}
+
+$reg .= join('|', @net);
+$reg .= '/';
+$reg =~ s/\./\\\./g;
+
+$conf->{'macros'}->{'localAccess'} = '(' . $reg . ") ? '1':'0'";
+
+$reg = '$ipAddr =~ /^';
+@net = ();
+
+# Do the same for extenal SSL access
+foreach my $net (split(/[;,]/,(${'httpd-admin'}{'ValidFrom'} || ''))){
+ my ($addr,$mask) = split(/\//,$net);
+ foreach (esmith::util::computeAllLocalNetworkPrefixes($addr,$mask)){
+ push @net, "($_)";
+ }
+}
+
+$reg .= join('|', @net);
+$reg .= '/';
+$reg =~ s/\./\\\./g;
+
+$conf->{'macros'}->{'externalSSLAccess'} = '(' . $reg . ") ? '1':'0'";
+
+$OUT = '';
+
+}
+
diff --git a/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/030notifications b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/030notifications
new file mode 100644
index 0000000..5f42906
--- /dev/null
+++ b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/030notifications
@@ -0,0 +1,10 @@
+{
+
+if (($conf->{'notification'} || '0') eq '1'){
+ $conf->{'notificationStorage'} = 'File';
+ $conf->{'notificationStorageOptions'} = {
+ 'dirName' => '/var/lib/lemonldap-ng/notifications'
+ },
+}
+
+}
diff --git a/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/035portal b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/035portal
new file mode 100644
index 0000000..a7068a9
--- /dev/null
+++ b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/035portal
@@ -0,0 +1,9 @@
+{
+
+# Portal elements
+$conf->{'portalDisplayRegister'} = 0;
+$conf->{'portalDisplayResetPassword'} = 0;
+
+$OUT = '';
+
+}
diff --git a/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/template-end b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/template-end
new file mode 100644
index 0000000..14bc02a
--- /dev/null
+++ b/root/etc/e-smith/templates/var/lib/lemonldap-ng/conf/lmConf/template-end
@@ -0,0 +1,16 @@
+{
+
+# Now, update the configuration
+my $num = $confAccess->saveConf($conf);
+
+if ($num > 0){
+ esmith::util::chownFile('www', 'www', "/var/lib/lemonldap-ng/conf/lmConf-$num");
+ chmod 0660, "/var/lib/lemonldap-ng/conf/lmConf-$num";
+}
+else {
+ die "An error occured saving LemonLDAP::NG configuration: $num\n";
+}
+
+$OUT = '# This is just a dummy config file';
+
+}
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/ajaxplorer.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/ajaxplorer.png
new file mode 100644
index 0000000..4da5373
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/ajaxplorer.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/backup.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/backup.png
new file mode 100644
index 0000000..44491f5
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/backup.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/backuppc.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/backuppc.png
new file mode 100644
index 0000000..28d175b
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/backuppc.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/calendar.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/calendar.png
new file mode 100644
index 0000000..988bb02
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/calendar.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/camera.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/camera.png
new file mode 100644
index 0000000..f889325
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/camera.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/dl.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/dl.png
new file mode 100644
index 0000000..b9a71cd
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/dl.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/dokuwiki.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/dokuwiki.png
new file mode 100644
index 0000000..45b4175
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/dokuwiki.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/freepbx.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/freepbx.png
new file mode 100644
index 0000000..03f54aa
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/freepbx.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/glpi.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/glpi.png
new file mode 100644
index 0000000..0855f94
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/glpi.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/jappix.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/jappix.png
new file mode 100644
index 0000000..2822a03
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/jappix.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/jenkins.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/jenkins.png
new file mode 100644
index 0000000..d539d10
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/jenkins.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/lemonldap.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/lemonldap.png
new file mode 100644
index 0000000..1306741
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/lemonldap.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/mailman.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/mailman.png
new file mode 100644
index 0000000..0d3482c
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/mailman.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/mediawiki.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/mediawiki.png
new file mode 100644
index 0000000..aca052c
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/mediawiki.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/nagios.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/nagios.png
new file mode 100644
index 0000000..c073b4f
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/nagios.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/ntop.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/ntop.png
new file mode 100644
index 0000000..2af60d5
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/ntop.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/openupload.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/openupload.png
new file mode 100644
index 0000000..0ed14a0
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/openupload.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/pda.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/pda.png
new file mode 100644
index 0000000..0e88c1a
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/pda.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/pfsense.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/pfsense.png
new file mode 100644
index 0000000..7d01a72
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/pfsense.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/phplist.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/phplist.png
new file mode 100644
index 0000000..796af32
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/phplist.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/phpmyadmin.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/phpmyadmin.png
new file mode 100644
index 0000000..6d4b686
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/phpmyadmin.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/power.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/power.png
new file mode 100644
index 0000000..0d3b40b
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/power.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/pydio.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/pydio.png
new file mode 100644
index 0000000..f1fd278
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/pydio.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/rdv.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/rdv.png
new file mode 100644
index 0000000..35f4206
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/rdv.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/redmine.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/redmine.png
new file mode 100644
index 0000000..d375f37
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/redmine.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/smeserver.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/smeserver.png
new file mode 100644
index 0000000..f141734
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/smeserver.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/survey.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/survey.png
new file mode 100644
index 0000000..fb95370
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/survey.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/telephone.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/telephone.png
new file mode 100644
index 0000000..36dc5c8
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/telephone.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/timezone.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/timezone.png
new file mode 100644
index 0000000..d15fd80
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/timezone.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/ttrss.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/ttrss.png
new file mode 100644
index 0000000..be1bf71
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/ttrss.png differ
diff --git a/root/usr/share/lemonldap-ng/portal-skins/common/apps/zabbix.png b/root/usr/share/lemonldap-ng/portal-skins/common/apps/zabbix.png
new file mode 100644
index 0000000..fa22a86
Binary files /dev/null and b/root/usr/share/lemonldap-ng/portal-skins/common/apps/zabbix.png differ
diff --git a/smeserver-lemonldap-ng.spec b/smeserver-lemonldap-ng.spec
new file mode 100644
index 0000000..744fab1
--- /dev/null
+++ b/smeserver-lemonldap-ng.spec
@@ -0,0 +1,211 @@
+# Authority: vip-ire
+# Name: Daniel Berteaud
+
+Summary: LemonLDAP NG is a web SSO solution
+%define name smeserver-lemonldap-ng
+Name: %{name}
+%define version 0.2.19
+%define release 2
+Version: 0.2.20
+Release: 1%{?dist}
+License: GPL
+Group: SME Server
+Source: %{name}-%{version}.tar.xz
+
+BuildArchitectures: noarch
+
+BuildRequires: e-smith-devtools
+BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot
+
+Requires: e-smith-base >= 5.2.0-56
+Requires: e-smith-ldap
+Requires: smeserver-webapps-common >= 0.1-8
+Requires: lemonldap-ng >= 1.4.1
+Requires: lemonldap-ng-fr-doc
+Requires: perl(Authen::Captcha)
+
+%description
+This package contains all the needed scripts and templates
+to run LemonLDAP NG on your SME Server. It uses LDAP as authentication source
+but can also use SSL auth (either optional with a fallback to LDAP, or SSL required)
+
+%changelog
+* Sat Sep 07 2024 cvs2git.sh aka Brian Read 0.2.19-2.sme
+- Roll up patches and move to git repo [SME: 12338]
+
+* Sat Sep 07 2024 BogusDateBot
+- Eliminated rpmbuild "bogus date" warnings due to inconsistent weekday,
+ by assuming the date is correct and changing the weekday.
+
+* Tue Sep 03 2019 Daniel Berteaud 0.2.20-1
+- Bump version
+
+* Tue Sep 03 2019 Daniel Berteaud 0.2.19-1
+- new package built with tito
+
+* Wed Feb 15 2017 Daniel Berteaud 0.2.19-1.sme
+- Set Access-Control-Allow-Origin on CAS endpoint, need for ticket renew in SOGo
+
+* Mon Jan 9 2017 Daniel Berteaud 0.2.18-1.sme
+- Update httpd template to read the Authentication prop of domain to load
+ Lemonldap::NG handler
+
+* Wed Dec 7 2016 Daniel Berteaud 0.2.17-1.sme
+- Replace My::Package with Lemonldap::NG::Handler in default vhost templates
+
+* Sat Jan 23 2016 Daniel Berteaud 0.2.16-1.sme
+- Don't redirect to https for acme challenges
+
+* Wed Oct 14 2015 Daniel Berteaud 0.2.15-1.sme
+- Fix DL icon size
+
+* Fri Sep 5 2014 Daniel Berteaud 0.2.14-1.sme
+- Define localSessionStorage to prevent clashes between handlers
+
+* Wed Jul 30 2014 Daniel Berteaud 0.2.13-1.sme
+- Add icons for mailman and phplist
+
+* Tue Jul 1 2014 Daniel Berteaud 0.2.12-1.sme
+- Adapt for LL::NG 1.4.1 (1.4.0 was too buggy)
+
+* Wed Dec 11 2013 Daniel Berteaud 0.2.11-1.sme
+- Add an icon for DL
+
+* Wed Nov 20 2013 Daniel Berteaud 0.2.10-1.sme
+- Add an icon for pydio
+
+* Mon Nov 18 2013 Daniel Berteaud 0.2.9-1.sme
+- Add two new icons (rdv.png and survey.png)
+
+* Wed Nov 13 2013 Daniel Berteaud 0.2.8-1.sme
+- compatibility with SME9 (perl lib path)
+
+* Mon Nov 4 2013 Daniel Berteaud 0.2.7-1.sme
+- Requires perl(Authen::Captcha) for LL::NG 1.3.0
+
+* Tue Sep 17 2013 Daniel Berteaud 0.2.6-1.sme
+- Small modifications to support SOGo CAS auth
+- Enable CAS auth
+
+* Wed Aug 21 2013 Daniel Berteaud 0.2.5-1.sme
+- Move custom icons to the correct directory
+
+* Wed Aug 21 2013 Daniel Berteaud 0.2.4-1.sme
+- Add custom icons for the portal
+
+* Tue Sep 4 2012 Daniel Berteaud 0.2.3-1.sme
+- Use Authentication prop instead of LemonLDAP
+
+* Wed Jun 20 2012 Daniel Berteaud 0.2.2-1.sme
+- Redirect to HTTPS on port 443
+
+* Wed Jun 20 2012 Daniel Berteaud 0.2.1-1.sme
+- Add optional floating menu per vhost
+
+* Wed Jun 20 2012 Daniel Berteaud 0.2.0-1.sme
+- Import in GIT
+- Remove the grantSessionRule param
+- Log via syslog (auth)
+
+* Mon Dec 19 2011 Daniel Berteaud 0.1-22.sme
+- Change SSL Auth to work with LocationMatch, so CAS proxy can work with
+ SSL Auth enabled
+
+* Wed Jul 13 2011 Daniel Berteaud 0.1-21.sme
+- Disable password reset form
+
+* Wed Jul 13 2011 Daniel Berteaud 0.1-20.sme
+- Fix uninitilized values in lemonldap conf templates
+
+* Mon Jul 11 2011 Daniel Berteaud 0.1-19.sme
+- reserve /lm-reload
+
+* Sun Jul 10 2011 Daniel Berteaud 0.1-18.sme
+- Fix notification check
+
+* Sat Jul 09 2011 Daniel Berteaud 0.1-17.sme
+- Don't force notifications on
+
+* Fri Jul 08 2011 Daniel Berteaud 0.1-16.sme
+- Enable and configure notifications
+
+* Thu Jun 30 2011 Daniel Berteaud 0.1-15.sme
+- Manage some configuration from the DB
+
+* Fri Mar 11 2011 Daniel Berteaud 0.1-14.sme
+- Make LemonLDAP compatible with ocsinventory-ng
+
+* Mon Mar 7 2011 Daniel Berteaud 0.1-13.sme
+- Add support for SSL Auth on the portal
+- Use a separated vhost for SOAP requests
+
+* Tue Feb 1 2011 Daniel Berteaud 0.1-12.sme
+- Requires recent version of smeserver-webapps-common
+- Switch to LDAP based auth to protect the manager
+
+* Tue Jan 25 2011 Daniel Berteaud 0.1-11.sme
+- Fix a spacing issue in httpd templates
+
+* Fri Jan 21 2011 Daniel Berteaud 0.1-10.sme
+- Add SSLEngine directives in https virtualhosts
+
+* Fri Jan 21 2011 Daniel Berteaud 0.1-9.sme
+- Fix empty SoapPassword
+
+* Thu Jan 06 2011 Daniel Berteaud 0.1-8.sme
+- Fix Soap ressources authentication
+
+* Mon Jan 03 2011 Daniel Berteaud 0.1-7.sme
+- Run the manager as a perl script (instead of CGI mode)
+
+* Mon Jan 03 2011 Daniel Berteaud 0.1-6.sme
+- Use https links for error pages
+
+* Thu Dec 30 2010 Daniel Berteaud 0.1-5.sme
+- use only alphanumeric characters for soap password
+- use htpasswd to hash the password
+
+* Tue Dec 28 2010 Daniel Berteaud 0.1-4.sme
+- don't load mod_auth_external if not needed
+- move cache dir in /var/cache
+- Fix several hosts listed in SoapAllowFrom
+
+* Fri Dec 24 2010 Daniel Berteaud 0.1-3.sme
+- Use htpasswd file to protect SOAP services
+- Configure session storage in lemonldap-ng.ini
+- Support additionnal server reload URL
+
+* Fri Dec 17 2010 Daniel Berteaud 0.1-2.sme
+- Let the manager be self-protected if ManagerAuth eq self
+
+* Thu Dec 16 2010 Daniel Berteaud 0.1-1.sme
+- initial public release
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%build
+perl createlinks
+%{__mkdir_p} root/var/cache/lemonldap-ng
+%{__mkdir_p} root/var/lib/lemonldap-ng/notifications
+
+%install
+/bin/rm -rf $RPM_BUILD_ROOT
+(cd root ; /usr/bin/find . -depth -print | /bin/cpio -dump $RPM_BUILD_ROOT)
+/bin/rm -f %{name}-%{version}-filelist
+/sbin/e-smith/genfilelist $RPM_BUILD_ROOT \
+ --dir /var/cache/lemonldap-ng 'attr(0770,root,www)' \
+ --dir /var/lib/lemonldap-ng/notifications 'attr(0770,root,www)' \
+ > %{name}-%{version}-filelist
+
+%files -f %{name}-%{version}-filelist
+%defattr(-,root,root)
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+
+%preun
+
+true