initial commit of file from CVS for smeserver-lemonldap-ng on Sat Sep 7 20:31:17 AEST 2024
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
*.rpm
|
||||
*.log
|
||||
*spec-20*
|
||||
*.tar.gz
|
21
Makefile
Normal file
@ -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)
|
15
README.md
@ -1,3 +1,16 @@
|
||||
# smeserver-lemonldap-ng
|
||||
# <img src="https://www.koozali.org/images/koozali/Logo/Png/Koozali_logo_2016.png" width="25%" vertical="auto" style="vertical-align:bottom"> smeserver-lemonldap-ng
|
||||
|
||||
SMEServer Koozali developed git repo for smeserver-lemonldap-ng smecontribs
|
||||
|
||||
## Wiki
|
||||
<br />https://wiki.koozali.org/LemonLDAP-NG
|
||||
<br />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
|
||||
|
||||
<br />*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*
|
||||
<br />
|
||||
|
3
additional/.tito/packages/.readme
Normal file
@ -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.
|
1
additional/.tito/packages/smeserver-lemonldap-ng
Normal file
@ -0,0 +1 @@
|
||||
0.2.20-1 ./
|
1
additional/.tito/releasers.conf
Symbolic link
@ -0,0 +1 @@
|
||||
../../tito_libs/releasers.conf
|
6
additional/.tito/tito.props
Normal file
@ -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
|
204
additional/smeserver-lemonldap-ng.spec
Normal file
@ -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 <daniel@firewall-services.com> 0.2.20-1
|
||||
- Bump version
|
||||
|
||||
* Tue Sep 03 2019 Daniel Berteaud <daniel@firewall-services.com> 0.2.19-1
|
||||
- new package built with tito
|
||||
|
||||
* Wed Feb 15 2017 Daniel Berteaud <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 0.2.17-1.sme
|
||||
- Replace My::Package with Lemonldap::NG::Handler in default vhost templates
|
||||
|
||||
* Sat Jan 23 2016 Daniel Berteaud <daniel@firewall-services.com> 0.2.16-1.sme
|
||||
- Don't redirect to https for acme challenges
|
||||
|
||||
* Wed Oct 14 2015 Daniel Berteaud <daniel@firewall-services.com> 0.2.15-1.sme
|
||||
- Fix DL icon size
|
||||
|
||||
* Fri Sep 5 2014 Daniel Berteaud <daniel@firewall-services.com> 0.2.14-1.sme
|
||||
- Define localSessionStorage to prevent clashes between handlers
|
||||
|
||||
* Wed Jul 30 2014 Daniel Berteaud <daniel@firewall-services.com> 0.2.13-1.sme
|
||||
- Add icons for mailman and phplist
|
||||
|
||||
* Tue Jul 1 2014 Daniel Berteaud <daniel@firewall-services.com> 0.2.12-1.sme
|
||||
- Adapt for LL::NG 1.4.1 (1.4.0 was too buggy)
|
||||
|
||||
* Wed Dec 11 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.11-1.sme
|
||||
- Add an icon for DL
|
||||
|
||||
* Wed Nov 20 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.10-1.sme
|
||||
- Add an icon for pydio
|
||||
|
||||
* Mon Nov 18 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.9-1.sme
|
||||
- Add two new icons (rdv.png and survey.png)
|
||||
|
||||
* Wed Nov 13 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.8-1.sme
|
||||
- compatibility with SME9 (perl lib path)
|
||||
|
||||
* Mon Nov 4 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.7-1.sme
|
||||
- Requires perl(Authen::Captcha) for LL::NG 1.3.0
|
||||
|
||||
* Tue Sep 17 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.6-1.sme
|
||||
- Small modifications to support SOGo CAS auth
|
||||
- Enable CAS auth
|
||||
|
||||
* Wed Aug 21 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.5-1.sme
|
||||
- Move custom icons to the correct directory
|
||||
|
||||
* Wed Aug 21 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.4-1.sme
|
||||
- Add custom icons for the portal
|
||||
|
||||
* Tue Sep 4 2012 Daniel Berteaud <daniel@firewall-services.com> 0.2.3-1.sme
|
||||
- Use Authentication prop instead of LemonLDAP
|
||||
|
||||
* Wed Jun 20 2012 Daniel Berteaud <daniel@firewall-services.com> 0.2.2-1.sme
|
||||
- Redirect to HTTPS on port 443
|
||||
|
||||
* Wed Jun 20 2012 Daniel Berteaud <daniel@firewall-services.com> 0.2.1-1.sme
|
||||
- Add optional floating menu per vhost
|
||||
|
||||
* Wed Jun 20 2012 Daniel Berteaud <daniel@firewall-services.com> 0.2.0-1.sme
|
||||
- Import in GIT
|
||||
- Remove the grantSessionRule param
|
||||
- Log via syslog (auth)
|
||||
|
||||
* Mon Dec 19 2011 Daniel Berteaud <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 0.1-21.sme
|
||||
- Disable password reset form
|
||||
|
||||
* Wed Jul 13 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-20.sme
|
||||
- Fix uninitilized values in lemonldap conf templates
|
||||
|
||||
* Mon Jul 11 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-19.sme
|
||||
- reserve /lm-reload
|
||||
|
||||
* Sun Jul 10 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-18.sme
|
||||
- Fix notification check
|
||||
|
||||
* Sat Jul 09 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-17.sme
|
||||
- Don't force notifications on
|
||||
|
||||
* Fri Jul 08 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-16.sme
|
||||
- Enable and configure notifications
|
||||
|
||||
* Thu Jun 30 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-15.sme
|
||||
- Manage some configuration from the DB
|
||||
|
||||
* Fri Mar 11 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-14.sme
|
||||
- Make LemonLDAP compatible with ocsinventory-ng
|
||||
|
||||
* Mon Mar 7 2011 Daniel Berteaud <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 0.1-11.sme
|
||||
- Fix a spacing issue in httpd templates
|
||||
|
||||
* Fri Jan 21 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-10.sme
|
||||
- Add SSLEngine directives in https virtualhosts
|
||||
|
||||
* Fri Jan 21 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-9.sme
|
||||
- Fix empty SoapPassword
|
||||
|
||||
* Thu Jan 06 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-8.sme
|
||||
- Fix Soap ressources authentication
|
||||
|
||||
* Mon Jan 03 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-7.sme
|
||||
- Run the manager as a perl script (instead of CGI mode)
|
||||
|
||||
* Mon Jan 03 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-6.sme
|
||||
- Use https links for error pages
|
||||
|
||||
* Thu Dec 30 2010 Daniel Berteaud <daniel@firewall-services.com> 0.1-5.sme
|
||||
- use only alphanumeric characters for soap password
|
||||
- use htpasswd to hash the password
|
||||
|
||||
* Tue Dec 28 2010 Daniel Berteaud <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 0.1-2.sme
|
||||
- Let the manager be self-protected if ManagerAuth eq self
|
||||
|
||||
* Thu Dec 16 2010 Daniel Berteaud <daniel@firewall-services.com> 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
|
1
contriborbase
Normal file
@ -0,0 +1 @@
|
||||
contribs10
|
14
createlinks
Normal file
@ -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");
|
||||
|
1
root/etc/e-smith/db/accounts/defaults/lm-reload/type
Normal file
@ -0,0 +1 @@
|
||||
url
|
@ -0,0 +1 @@
|
||||
enabled
|
@ -0,0 +1 @@
|
||||
service
|
14
root/etc/e-smith/db/configuration/migrate/90MigrateLemonLDAP
Normal file
@ -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');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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');
|
||||
}
|
||||
|
||||
}
|
@ -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");
|
||||
}
|
||||
|
||||
}
|
88
root/etc/e-smith/events/actions/lemonldap-init-domains
Normal file
@ -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;
|
||||
|
43
root/etc/e-smith/events/actions/lemonldap-update-conf
Normal file
@ -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);
|
@ -0,0 +1,3 @@
|
||||
PERMS=0640
|
||||
UID="root"
|
||||
GID="www"
|
@ -0,0 +1,3 @@
|
||||
PERMS=0640
|
||||
UID="root"
|
||||
GID="www"
|
@ -0,0 +1,3 @@
|
||||
PERMS=0640
|
||||
UID="www"
|
||||
GID="www"
|
@ -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
|
||||
<Location /lm-reload>
|
||||
SSLRequireSSL on
|
||||
Order deny,allow
|
||||
Deny from all
|
||||
Allow from {"$LocalIP $localAccess $externalSSLAccess";}
|
||||
PerlHeaderParserHandler Lemonldap::NG::Handler->refresh
|
||||
</Location>
|
||||
|
||||
# Uncomment this to activate status module
|
||||
#<Location /status>
|
||||
# Order deny,allow
|
||||
# Deny from all
|
||||
# Allow from 127.0.0.0/8
|
||||
# PerlHeaderParserHandler Lemonldap::NG::Handler->status
|
||||
#</Location>
|
||||
|
@ -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 = "";
|
||||
}
|
||||
|
@ -0,0 +1 @@
|
||||
ServerName {$virtualHost}
|
@ -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/
|
||||
<Directory /var/lib/lemonldap-ng/manager/>
|
||||
Order deny,allow
|
||||
Deny from all
|
||||
Allow from $localAccess $externalSSLAccess
|
||||
Options +ExecCGI +FollowSymlinks
|
||||
$auth
|
||||
Satisfy all
|
||||
</Directory>
|
||||
|
||||
# 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/
|
||||
<Directory /var/lib/lemonldap-ng/doc/>
|
||||
Order deny,allow
|
||||
Allow from all
|
||||
ErrorDocument 404 /notfound.html
|
||||
Options +FollowSymlinks
|
||||
DirectoryIndex index.pl index.html
|
||||
</Directory>
|
||||
<Directory /var/lib/lemonldap-ng/fr-doc/>
|
||||
Order deny,allow
|
||||
Allow from all
|
||||
ErrorDocument 404 /notfound.html
|
||||
Options +FollowSymlinks
|
||||
DirectoryIndex index.pl index.html
|
||||
</Directory>
|
||||
|
||||
# Perl script
|
||||
# Note: to avoid manager stay in memory, we don't use ModPerl::Registry
|
||||
# by default. Change this to increase manager performances
|
||||
<Files *.pl>
|
||||
#SetHandler cgi-script
|
||||
SetHandler perl-script
|
||||
PerlResponseHandler ModPerl::Registry
|
||||
</Files>
|
||||
|
||||
# Directory index
|
||||
<IfModule mod_dir.c>
|
||||
DirectoryIndex index.pl index.html
|
||||
</IfModule>
|
||||
|
||||
<Location />
|
||||
<IfModule mod_deflate.c>
|
||||
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
|
||||
</IfModule>
|
||||
<IfModule mod_headers.c>
|
||||
Header append Vary User-Agent env=!dont-vary
|
||||
</IfModule>
|
||||
</Location>
|
||||
<Location /doc/>
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
ExpiresDefault "access plus 1 month"
|
||||
</IfModule>
|
||||
</Location>
|
||||
<Location /skins/>
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
ExpiresDefault "access plus 1 month"
|
||||
</IfModule>
|
||||
</Location>
|
||||
EOF
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,2 @@
|
||||
|
||||
<VirtualHost {$ipAddress}:{$port}>
|
@ -0,0 +1,2 @@
|
||||
</VirtualHost>
|
||||
|
@ -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 = "";
|
||||
}
|
||||
|
@ -0,0 +1 @@
|
||||
ServerName {$virtualHost}
|
@ -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";
|
||||
<LocationMatch "^/(\$|\\?url=.*|cas/login.*)">
|
||||
SSLVerifyClient $SSLAuth
|
||||
SSLVerifyDepth 1
|
||||
SSLOptions +StdEnvVars
|
||||
SSLUserName SSL_CLIENT_S_DN_CN
|
||||
</LocationMatch>
|
||||
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";
|
||||
<Location /cas>
|
||||
BrowserMatch "SOPE/" downgrade-1.0
|
||||
PerlOutputFilterHandler Apache::FilterChangeLength
|
||||
Header set Access-Control-Allow-Origin '*'
|
||||
</Location>
|
||||
HERE
|
||||
}
|
||||
|
||||
$OUT .=<<"EOF";
|
||||
|
||||
SSLEngine On
|
||||
|
||||
PerlOptions +Parent
|
||||
|
||||
#====================================================================
|
||||
# Apache configuration for LemonLDAP::NG Portal
|
||||
#====================================================================
|
||||
|
||||
# DocumentRoot
|
||||
DocumentRoot /var/lib/lemonldap-ng/portal/
|
||||
|
||||
<Perl>
|
||||
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;
|
||||
</Perl>
|
||||
|
||||
<Directory /var/lib/lemonldap-ng/portal/>
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
Options +ExecCGI +FollowSymlinks
|
||||
</Directory>
|
||||
$sslDirectives
|
||||
$sogoWorkArround
|
||||
|
||||
# Perl script
|
||||
<Files *.pl>
|
||||
SetHandler perl-script
|
||||
PerlResponseHandler ModPerl::Registry
|
||||
</Files>
|
||||
|
||||
<IfModule mod_dir.c>
|
||||
DirectoryIndex index.pl index.html
|
||||
</IfModule>
|
||||
|
||||
# SAML2 Issuer
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteRule ^/saml/metadata /metadata.pl
|
||||
RewriteRule ^/saml/.* /index.pl
|
||||
</IfModule>
|
||||
|
||||
# CAS Issuer
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteRule ^/cas/.* /index.pl
|
||||
</IfModule>
|
||||
|
||||
# OpenID Issuer
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteRule ^/openidserver/.* /index.pl
|
||||
</IfModule>
|
||||
|
||||
<Location />
|
||||
<IfModule mod_deflate.c>
|
||||
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
|
||||
</IfModule>
|
||||
<IfModule mod_headers.c>
|
||||
Header append Vary User-Agent env=!dont-vary
|
||||
</IfModule>
|
||||
</Location>
|
||||
<Location /skins/>
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
ExpiresDefault "access plus 1 month"
|
||||
</IfModule>
|
||||
</Location>
|
||||
|
||||
EOF
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,2 @@
|
||||
|
||||
<VirtualHost {$ipAddress}:{$port}>
|
@ -0,0 +1,2 @@
|
||||
</VirtualHost>
|
||||
|
@ -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 = "";
|
||||
}
|
||||
|
@ -0,0 +1 @@
|
||||
ServerName {$virtualHost}
|
@ -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/
|
||||
|
||||
<Perl>
|
||||
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;
|
||||
</Perl>
|
||||
|
||||
<Directory /var/lib/lemonldap-ng/portal/>
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
Options +ExecCGI +FollowSymlinks
|
||||
</Directory>
|
||||
|
||||
# Perl script
|
||||
<Files *.pl>
|
||||
SetHandler perl-script
|
||||
PerlResponseHandler ModPerl::Registry
|
||||
</Files>
|
||||
|
||||
<IfModule mod_dir.c>
|
||||
DirectoryIndex index.pl index.html
|
||||
</IfModule>
|
||||
|
||||
# SOAP functions for sessions management (disabled by default)
|
||||
<Location /index.pl/adminSessions>
|
||||
Order deny,allow
|
||||
Deny from all
|
||||
$soapAllow
|
||||
</Location>
|
||||
|
||||
# SOAP functions for sessions access (disabled by default)
|
||||
<Location /index.pl/sessions>
|
||||
Order deny,allow
|
||||
Deny from all
|
||||
$soapAllow
|
||||
</Location>
|
||||
|
||||
# SOAP functions for configuration access (disabled by default)
|
||||
<Location /index.pl/config>
|
||||
Order deny,allow
|
||||
Deny from all
|
||||
$soapAllow
|
||||
</Location>
|
||||
|
||||
# SOAP functions for notification insertion (disabled by default)
|
||||
<Location /index.pl/notification>
|
||||
Order deny,allow
|
||||
Deny from all
|
||||
$soapAllow
|
||||
</Location>
|
||||
|
||||
<Location />
|
||||
<IfModule mod_deflate.c>
|
||||
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
|
||||
</IfModule>
|
||||
<IfModule mod_headers.c>
|
||||
Header append Vary User-Agent env=!dont-vary
|
||||
</IfModule>
|
||||
</Location>
|
||||
<Location /skins/>
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
ExpiresDefault "access plus 1 month"
|
||||
</IfModule>
|
||||
</Location>
|
||||
|
||||
EOF
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,2 @@
|
||||
|
||||
<VirtualHost {$ipAddress}:{$port}>
|
@ -0,0 +1,2 @@
|
||||
</VirtualHost>
|
||||
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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
|
||||
#==============================================================================
|
||||
|
@ -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, \}
|
||||
|
@ -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, \}
|
||||
|
||||
|
@ -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";
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
|
||||
[manager]
|
||||
{
|
||||
$OUT .= (($lemonldap{'ManagerAuth'} || 'basic') eq 'self') ?
|
||||
'protection = manager' : '';
|
||||
}
|
||||
|
||||
[sessionsExplorer]
|
||||
|
||||
|
@ -0,0 +1,6 @@
|
||||
[handler]
|
||||
|
||||
https = 1
|
||||
status = 0
|
||||
useRedirectOnError = 1
|
||||
|
@ -0,0 +1,3 @@
|
||||
|
||||
[portal]
|
||||
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
my $pw = $lemonldap{'SoapPassword'} || 'secret';
|
||||
my $res = `/usr/bin/htpasswd -bnm lemonsoap $pw`;
|
||||
chomp($res);
|
||||
$OUT .= $res;
|
||||
}
|
@ -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 = '';
|
||||
|
||||
}
|
@ -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 .= '';
|
||||
|
||||
}
|
@ -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 .= '';
|
||||
}
|
@ -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 = '';
|
||||
|
||||
}
|
@ -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 = '';
|
||||
|
||||
}
|
@ -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 = '';
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,10 @@
|
||||
{
|
||||
|
||||
if (($conf->{'notification'} || '0') eq '1'){
|
||||
$conf->{'notificationStorage'} = 'File';
|
||||
$conf->{'notificationStorageOptions'} = {
|
||||
'dirName' => '/var/lib/lemonldap-ng/notifications'
|
||||
},
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
{
|
||||
|
||||
# Portal elements
|
||||
$conf->{'portalDisplayRegister'} = 0;
|
||||
$conf->{'portalDisplayResetPassword'} = 0;
|
||||
|
||||
$OUT = '';
|
||||
|
||||
}
|
@ -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';
|
||||
|
||||
}
|
After Width: | Height: | Size: 2.0 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/backup.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 2.6 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/camera.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/dl.png
Normal file
After Width: | Height: | Size: 860 B |
After Width: | Height: | Size: 4.2 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/freepbx.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/glpi.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/jappix.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/jenkins.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 1.5 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/mailman.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.7 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/nagios.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/ntop.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 3.6 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/pda.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/pfsense.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/phplist.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 3.7 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/power.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/pydio.png
Normal file
After Width: | Height: | Size: 709 B |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/rdv.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/redmine.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 3.0 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/survey.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.8 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/ttrss.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
root/usr/share/lemonldap-ng/portal-skins/common/apps/zabbix.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
211
smeserver-lemonldap-ng.spec
Normal file
@ -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 <brianr@koozali.org> 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 <daniel@firewall-services.com> 0.2.20-1
|
||||
- Bump version
|
||||
|
||||
* Tue Sep 03 2019 Daniel Berteaud <daniel@firewall-services.com> 0.2.19-1
|
||||
- new package built with tito
|
||||
|
||||
* Wed Feb 15 2017 Daniel Berteaud <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 0.2.17-1.sme
|
||||
- Replace My::Package with Lemonldap::NG::Handler in default vhost templates
|
||||
|
||||
* Sat Jan 23 2016 Daniel Berteaud <daniel@firewall-services.com> 0.2.16-1.sme
|
||||
- Don't redirect to https for acme challenges
|
||||
|
||||
* Wed Oct 14 2015 Daniel Berteaud <daniel@firewall-services.com> 0.2.15-1.sme
|
||||
- Fix DL icon size
|
||||
|
||||
* Fri Sep 5 2014 Daniel Berteaud <daniel@firewall-services.com> 0.2.14-1.sme
|
||||
- Define localSessionStorage to prevent clashes between handlers
|
||||
|
||||
* Wed Jul 30 2014 Daniel Berteaud <daniel@firewall-services.com> 0.2.13-1.sme
|
||||
- Add icons for mailman and phplist
|
||||
|
||||
* Tue Jul 1 2014 Daniel Berteaud <daniel@firewall-services.com> 0.2.12-1.sme
|
||||
- Adapt for LL::NG 1.4.1 (1.4.0 was too buggy)
|
||||
|
||||
* Wed Dec 11 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.11-1.sme
|
||||
- Add an icon for DL
|
||||
|
||||
* Wed Nov 20 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.10-1.sme
|
||||
- Add an icon for pydio
|
||||
|
||||
* Mon Nov 18 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.9-1.sme
|
||||
- Add two new icons (rdv.png and survey.png)
|
||||
|
||||
* Wed Nov 13 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.8-1.sme
|
||||
- compatibility with SME9 (perl lib path)
|
||||
|
||||
* Mon Nov 4 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.7-1.sme
|
||||
- Requires perl(Authen::Captcha) for LL::NG 1.3.0
|
||||
|
||||
* Tue Sep 17 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.6-1.sme
|
||||
- Small modifications to support SOGo CAS auth
|
||||
- Enable CAS auth
|
||||
|
||||
* Wed Aug 21 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.5-1.sme
|
||||
- Move custom icons to the correct directory
|
||||
|
||||
* Wed Aug 21 2013 Daniel Berteaud <daniel@firewall-services.com> 0.2.4-1.sme
|
||||
- Add custom icons for the portal
|
||||
|
||||
* Tue Sep 4 2012 Daniel Berteaud <daniel@firewall-services.com> 0.2.3-1.sme
|
||||
- Use Authentication prop instead of LemonLDAP
|
||||
|
||||
* Wed Jun 20 2012 Daniel Berteaud <daniel@firewall-services.com> 0.2.2-1.sme
|
||||
- Redirect to HTTPS on port 443
|
||||
|
||||
* Wed Jun 20 2012 Daniel Berteaud <daniel@firewall-services.com> 0.2.1-1.sme
|
||||
- Add optional floating menu per vhost
|
||||
|
||||
* Wed Jun 20 2012 Daniel Berteaud <daniel@firewall-services.com> 0.2.0-1.sme
|
||||
- Import in GIT
|
||||
- Remove the grantSessionRule param
|
||||
- Log via syslog (auth)
|
||||
|
||||
* Mon Dec 19 2011 Daniel Berteaud <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 0.1-21.sme
|
||||
- Disable password reset form
|
||||
|
||||
* Wed Jul 13 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-20.sme
|
||||
- Fix uninitilized values in lemonldap conf templates
|
||||
|
||||
* Mon Jul 11 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-19.sme
|
||||
- reserve /lm-reload
|
||||
|
||||
* Sun Jul 10 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-18.sme
|
||||
- Fix notification check
|
||||
|
||||
* Sat Jul 09 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-17.sme
|
||||
- Don't force notifications on
|
||||
|
||||
* Fri Jul 08 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-16.sme
|
||||
- Enable and configure notifications
|
||||
|
||||
* Thu Jun 30 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-15.sme
|
||||
- Manage some configuration from the DB
|
||||
|
||||
* Fri Mar 11 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-14.sme
|
||||
- Make LemonLDAP compatible with ocsinventory-ng
|
||||
|
||||
* Mon Mar 7 2011 Daniel Berteaud <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 0.1-11.sme
|
||||
- Fix a spacing issue in httpd templates
|
||||
|
||||
* Fri Jan 21 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-10.sme
|
||||
- Add SSLEngine directives in https virtualhosts
|
||||
|
||||
* Fri Jan 21 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-9.sme
|
||||
- Fix empty SoapPassword
|
||||
|
||||
* Thu Jan 06 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-8.sme
|
||||
- Fix Soap ressources authentication
|
||||
|
||||
* Mon Jan 03 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-7.sme
|
||||
- Run the manager as a perl script (instead of CGI mode)
|
||||
|
||||
* Mon Jan 03 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-6.sme
|
||||
- Use https links for error pages
|
||||
|
||||
* Thu Dec 30 2010 Daniel Berteaud <daniel@firewall-services.com> 0.1-5.sme
|
||||
- use only alphanumeric characters for soap password
|
||||
- use htpasswd to hash the password
|
||||
|
||||
* Tue Dec 28 2010 Daniel Berteaud <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 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 <daniel@firewall-services.com> 0.1-2.sme
|
||||
- Let the manager be self-protected if ManagerAuth eq self
|
||||
|
||||
* Thu Dec 16 2010 Daniel Berteaud <daniel@firewall-services.com> 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
|