Archived
Compare commits
79
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bc0dd766d2 | ||
|
|
9964ef4491 | ||
|
|
c0aef5c88e | ||
|
|
a377d17e5a | ||
|
|
78e3ae88e2 | ||
|
|
01f8d8ddcf | ||
|
|
dc2ec09f22 | ||
|
|
ad1de4a196 | ||
|
|
41dd9c581e | ||
|
|
79387d1f4e | ||
|
|
9a3d247903 | ||
|
|
a659aba3ce | ||
|
|
680bfa91f7 | ||
|
|
f1a9dd1b78 | ||
|
|
69b7e8fdfe | ||
|
|
f5d4c7b5c5 | ||
|
|
c788c20245 | ||
|
|
731d92cb2e | ||
|
|
09b8595d62 | ||
|
|
e893fff3c8 | ||
|
|
234448a2f6 | ||
|
|
f689d38735 | ||
|
|
ea98e31808 | ||
|
|
7eae1e4547 | ||
|
|
17a6c73799 | ||
|
|
b7459175e1 | ||
|
|
b68b62a130 | ||
|
|
4ecd6c7ba7 | ||
|
|
1546818b81 | ||
|
|
6fd179601b | ||
|
|
13b7a0624e | ||
|
|
fe18497e16 | ||
|
|
8e9be9c75b | ||
|
|
db173a2dc9 | ||
|
|
899389b581 | ||
|
|
62defdfd95 | ||
|
|
a07ed80902 | ||
|
|
a75d5c401e | ||
|
|
8e81c4574d | ||
|
|
e4a4f6a667 | ||
|
|
a9f7f47e9a | ||
|
|
e11220fb96 | ||
|
|
d36e3dd10e | ||
|
|
b7a2691545 | ||
|
|
d4e039a2bf | ||
|
|
6cfd595bd5 | ||
|
|
e553d3749d | ||
|
|
1b6dab9852 | ||
|
|
ea563acee9 | ||
|
|
0a1e79690e | ||
|
|
378207027a | ||
|
|
d245c07803 | ||
|
|
6849077ee8 | ||
|
|
35904aa284 | ||
|
|
3ae806c51f | ||
|
|
1e2512c998 | ||
|
|
9531804222 | ||
|
|
faeb220686 | ||
|
|
987d044727 | ||
|
|
ba0b83ad27 | ||
|
|
ccaf1cf6bc | ||
|
|
e303d10740 | ||
|
|
b4de6adb08 | ||
|
|
b98fb70cd4 | ||
|
|
e936973e9c | ||
|
|
223c040565 | ||
|
|
940c5afc4f | ||
|
|
857e692b3c | ||
|
|
e7efbceae8 | ||
|
|
87fea6c869 | ||
|
|
c32c1683ed | ||
|
|
5606ef1938 | ||
|
|
5125257293 | ||
|
|
2c6ceec151 | ||
|
|
d9f06d5579 | ||
|
|
a31e2ce8bd | ||
|
|
676d3d736d | ||
|
|
a413a31ed3 | ||
|
|
c00342523e |
No files matched your search
Whitespace-only changes.
+29
-15
@@ -1,45 +1,59 @@
|
|||||||
FROM osixia/baseimage
|
FROM osixia/baseimage:0.10.0
|
||||||
MAINTAINER Bertrand Gouny <bertrand.gouny@osixia.fr>
|
MAINTAINER Bertrand Gouny <bertrand.gouny@osixia.net>
|
||||||
|
|
||||||
# From Nick Stenning's work
|
# From Nick Stenning's work
|
||||||
# https://github.com/nickstenning/docker-slapd
|
# https://github.com/nickstenning/docker-slapd
|
||||||
|
|
||||||
# Default configuration: can be overridden at the docker command line
|
# Default configuration: can be overridden at the docker command line
|
||||||
|
ENV DOMAIN_NAME ldap.example.com
|
||||||
|
ENV LDAP_DOMAIN example.com
|
||||||
ENV LDAP_ADMIN_PWD toor
|
ENV LDAP_ADMIN_PWD toor
|
||||||
ENV LDAP_ORGANISATION Example Inc.
|
ENV LDAP_ORGANISATION Example Inc.
|
||||||
ENV LDAP_DOMAIN example.com
|
|
||||||
|
|
||||||
# /!\ To store the data outside the container, mount /var/lib/ldap as a data volume
|
ENV WITH_MMC_AGENT false
|
||||||
# add -v /some/host/directory:/var/lib/ldap to the run command
|
ENV MMC_AGENT_LOGIN mmc-docker
|
||||||
|
ENV MMC_AGENT_PASSWORD passw0rd
|
||||||
|
|
||||||
|
# /!\ To store the data outside the container,
|
||||||
|
# mount /var/lib/ldap and /etc/ldap/slapd.d as a data volume add
|
||||||
|
# -v /some/host/directory:/var/lib/ldap and -v /some/other/host/directory:/etc/ldap/slapd.d
|
||||||
|
# to the run command
|
||||||
|
|
||||||
|
VOLUME ["/var/lib/ldap", "/etc/ldap/slapd.d"]
|
||||||
|
|
||||||
# Disable SSH
|
# Disable SSH
|
||||||
RUN rm -rf /etc/service/sshd /etc/my_init.d/00_regen_ssh_host_keys.sh
|
# RUN rm -rf /etc/service/sshd /etc/my_init.d/00_regen_ssh_host_keys.sh
|
||||||
|
|
||||||
# DIsable nginx and php
|
# Enable dnsmasq
|
||||||
RUN rm -rf /etc/service/nginx /etc/service/php5-fpm
|
RUN /sbin/enable-service dnsmasq ca-authority
|
||||||
|
|
||||||
# Use baseimage-docker's init system.
|
# Use baseimage-docker's init system.
|
||||||
CMD ["/sbin/my_init"]
|
CMD ["/sbin/my_init"]
|
||||||
|
|
||||||
|
# Add Mandriva MDS repository
|
||||||
|
RUN echo "deb http://mds.mandriva.org/pub/mds/debian wheezy main" >> /etc/apt/sources.list
|
||||||
|
|
||||||
# Resynchronize the package index files from their sources
|
# Resynchronize the package index files from their sources
|
||||||
RUN apt-get -y update
|
RUN apt-get -y update
|
||||||
|
|
||||||
# Install openldap (slapd) and ldap-utils
|
# Install openldap (slapd) and ldap-utils
|
||||||
RUN LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -y slapd ldap-utils openssl
|
RUN LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes --no-install-recommends slapd ldap-utils mmc-agent python-mmc-mail
|
||||||
|
|
||||||
# Expose ldap default port
|
# Expose ldap and mmc-agent default ports
|
||||||
EXPOSE 389
|
EXPOSE 389 7080
|
||||||
|
|
||||||
# Create TLS certificats directory
|
# Create TLS certificats directory
|
||||||
RUN mkdir /etc/ldap/ssl
|
RUN mkdir /etc/ldap/ssl
|
||||||
|
|
||||||
# Add config directory
|
# Add config directory
|
||||||
RUN mkdir /etc/ldap/config
|
ADD service/slapd/assets/config /etc/ldap/config
|
||||||
ADD config /etc/ldap/config
|
ADD service/mmc-agent/assets /etc/mmc/agent/assets
|
||||||
|
|
||||||
# Add slapd deamon
|
# Add slapd deamon
|
||||||
RUN mkdir /etc/service/slapd
|
ADD service/slapd/slapd.sh /etc/service/slapd/run
|
||||||
ADD slapd.sh /etc/service/slapd/run
|
|
||||||
|
# Add mmc-agent deamon
|
||||||
|
ADD service/mmc-agent/mmc-agent.sh /etc/service/mmc-agent/run
|
||||||
|
|
||||||
# Clear out the local repository of retrieved package files
|
# Clear out the local repository of retrieved package files
|
||||||
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2014 Osixia
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
NAME = osixia/openldap
|
||||||
|
VERSION = 0.9.2
|
||||||
|
|
||||||
|
.PHONY: all build test tag_latest release
|
||||||
|
|
||||||
|
all: build
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker build -t $(NAME):$(VERSION) --rm .
|
||||||
|
|
||||||
|
test:
|
||||||
|
env NAME=$(NAME) VERSION=$(VERSION) ./test.sh debug
|
||||||
|
|
||||||
|
tag_latest:
|
||||||
|
docker tag $(NAME):$(VERSION) $(NAME):latest
|
||||||
|
|
||||||
|
release: build test tag_latest
|
||||||
|
@if ! docker images $(NAME) | awk '{ print $$2 }' | grep -q -F $(VERSION); then echo "$(NAME) version $(VERSION) is not yet built. Please run 'make build'"; false; fi
|
||||||
|
@if ! head -n 1 CHANGELOG.md | grep -q 'release date'; then echo 'Please note the release date in Changelog.md.' && false; fi
|
||||||
|
docker push $(NAME)
|
||||||
|
@echo "*** Don't forget to run 'twgit release/hotfix finish' :)"
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
## docker-openldap
|
# docker-openldap
|
||||||
|
|
||||||
Fork of Nick Stenning docker-slapd :
|
Fork of Nick Stenning docker-slapd :
|
||||||
https://github.com/nickstenning/docker-slapd
|
https://github.com/nickstenning/docker-slapd
|
||||||
@@ -30,3 +30,4 @@ and optionaly `dhparam.pem` this file is genereted automaticaly if not present.
|
|||||||
-e LDAP_ORGANISATION="Example Corp." \
|
-e LDAP_ORGANISATION="Example Corp." \
|
||||||
-e LDAP_ROOTPASS=toor \
|
-e LDAP_ROOTPASS=toor \
|
||||||
-p 389:389 -d osixia/openldap
|
-p 389:389 -d osixia/openldap
|
||||||
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[userdefault]
|
||||||
|
mailbox = /home/vmail/%uid%/
|
||||||
|
mailuserquota = 204800
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
include /etc/ldap/schema/core.schema
|
||||||
|
include /etc/ldap/schema/cosine.schema
|
||||||
|
include /etc/ldap/schema/nis.schema
|
||||||
|
include /etc/ldap/schema/inetorgperson.schema
|
||||||
|
include /usr/share/doc/mmc/contrib/base/mmc.schema
|
||||||
|
include /usr/share/doc/mmc/contrib/mail/mail.schema
|
||||||
Executable
+94
@@ -0,0 +1,94 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# -e Exit immediately if a command exits with a non-zero status
|
||||||
|
set -e
|
||||||
|
|
||||||
|
WITH_MMC_AGENT=${WITH_MMC_AGENT}
|
||||||
|
|
||||||
|
# Run mmc-agent
|
||||||
|
if [ "$WITH_MMC_AGENT" = true ]; then
|
||||||
|
|
||||||
|
# Openldap is configured
|
||||||
|
if [ -e /etc/ldap/slapd.d/docker_bootstrapped ]; then
|
||||||
|
|
||||||
|
# mmc-agent is not already configured
|
||||||
|
if [ ! -e /etc/mmc/agent/docker_bootstrapped ]; then
|
||||||
|
status "configuring mmc-agent for first run"
|
||||||
|
|
||||||
|
status () {
|
||||||
|
echo "---> ${@}" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
getBaseDn () {
|
||||||
|
IFS="."
|
||||||
|
export IFS
|
||||||
|
|
||||||
|
domain=$1
|
||||||
|
init=1
|
||||||
|
|
||||||
|
for s in $domain; do
|
||||||
|
dc="dc=$s"
|
||||||
|
if [ "$init" -eq 1 ]; then
|
||||||
|
baseDn=$dc
|
||||||
|
init=0
|
||||||
|
else
|
||||||
|
baseDn="$baseDn,$dc"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
DOMAIN_NAME=${DOMAIN_NAME}
|
||||||
|
WITH_MMC_AGENT=${WITH_MMC_AGENT}
|
||||||
|
LDAP_DOMAIN=${LDAP_DOMAIN}
|
||||||
|
LDAP_ADMIN_PWD=${LDAP_ADMIN_PWD}
|
||||||
|
MMC_AGENT_LOGIN=${MMC_AGENT_LOGIN}
|
||||||
|
MMC_AGENT_PASSWORD=${MMC_AGENT_PASSWORD}
|
||||||
|
|
||||||
|
# mmc-agent config
|
||||||
|
sed -i -e "s/127.0.0.1/0.0.0.0/" /etc/mmc/agent/config.ini #listen on docker default network
|
||||||
|
sed -i -e "s/login = mmc/login = $MMC_AGENT_LOGIN/" /etc/mmc/agent/config.ini
|
||||||
|
sed -i -e "s/password = s3cr3t/password = $MMC_AGENT_PASSWORD/" /etc/mmc/agent/config.ini
|
||||||
|
|
||||||
|
# generate ssl certificate
|
||||||
|
rm /etc/mmc/agent/keys/cacert.pem /etc/mmc/agent/keys/localcert.pem
|
||||||
|
/sbin/ssl-create-cert mmc /etc/mmc/agent/keys/cacert.pem /etc/mmc/agent/keys/localcert.pem
|
||||||
|
|
||||||
|
# Get base dn from ldap domain
|
||||||
|
getBaseDn ${LDAP_DOMAIN}
|
||||||
|
|
||||||
|
sed -i -e "s/dc=mandriva, dc=com/$baseDn/" /etc/mmc/plugins/base.ini
|
||||||
|
sed -i -e "s/password = secret/password = $LDAP_ADMIN_PWD/" /etc/mmc/plugins/base.ini
|
||||||
|
|
||||||
|
mkdir /home/archives
|
||||||
|
|
||||||
|
# Mail plugin
|
||||||
|
|
||||||
|
sed -i -e 's/vDomainSupport = 0/vDomainSupport = 1/g' /etc/mmc/plugins/mail.ini
|
||||||
|
sed -i -e 's/vAliasesSupport = 0/vAliasesSupport = 1/g' /etc/mmc/plugins/mail.ini
|
||||||
|
cat /etc/mmc/agent/assets/append_to_mail.ini >> /etc/mmc/plugins/mail.ini
|
||||||
|
|
||||||
|
touch /etc/mmc/agent/docker_bootstrapped
|
||||||
|
else
|
||||||
|
status "found already-configured mmc-agent"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run mmc-agent
|
||||||
|
exec /usr/sbin/mmc-agent -d
|
||||||
|
|
||||||
|
# wait openldap config done
|
||||||
|
else
|
||||||
|
sleep 3s
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Do nothing but needed for runit
|
||||||
|
else
|
||||||
|
sleep 1d
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
dn: cn=config
|
dn: cn=config
|
||||||
changetype: modify
|
changetype: modify
|
||||||
|
add: olcTLSCipherSuite
|
||||||
|
olcTLSCipherSuite: SECURE256:-VERS-SSL3.0
|
||||||
|
-
|
||||||
replace: olcTLSCACertificateFile
|
replace: olcTLSCACertificateFile
|
||||||
olcTLSCACertificateFile: /etc/ldap/ssl/ca.crt
|
olcTLSCACertificateFile: /etc/ldap/ssl/ca.crt
|
||||||
-
|
-
|
||||||
File renamed without changes.
Executable
+129
@@ -0,0 +1,129 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
status () {
|
||||||
|
echo "---> ${@}" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
set -x
|
||||||
|
: LDAP_ADMIN_PWD=${LDAP_ADMIN_PWD}
|
||||||
|
: LDAP_DOMAIN=${LDAP_DOMAIN}
|
||||||
|
: LDAP_ORGANISATION=${LDAP_ORGANISATION}
|
||||||
|
: DOMAIN_NAME=${DOMAIN_NAME}
|
||||||
|
|
||||||
|
|
||||||
|
############ Base config ############
|
||||||
|
if [ ! -e /var/lib/ldap/docker_bootstrapped ]; then
|
||||||
|
status "configuring slapd database"
|
||||||
|
|
||||||
|
cat <<EOF | debconf-set-selections
|
||||||
|
slapd slapd/internal/generated_adminpw password ${LDAP_ADMIN_PWD}
|
||||||
|
slapd slapd/internal/adminpw password ${LDAP_ADMIN_PWD}
|
||||||
|
slapd slapd/password2 password ${LDAP_ADMIN_PWD}
|
||||||
|
slapd slapd/password1 password ${LDAP_ADMIN_PWD}
|
||||||
|
slapd slapd/dump_database_destdir string /var/backups/slapd-VERSION
|
||||||
|
slapd slapd/domain string ${LDAP_DOMAIN}
|
||||||
|
slapd shared/organization string ${LDAP_ORGANISATION}
|
||||||
|
slapd slapd/backend string HDB
|
||||||
|
slapd slapd/purge_database boolean true
|
||||||
|
slapd slapd/move_old_database boolean true
|
||||||
|
slapd slapd/allow_ldap_v2 boolean false
|
||||||
|
slapd slapd/no_configuration boolean false
|
||||||
|
slapd slapd/dump_database select when needed
|
||||||
|
EOF
|
||||||
|
|
||||||
|
dpkg-reconfigure -f noninteractive slapd
|
||||||
|
|
||||||
|
# Enable access only from docker default network and localhost
|
||||||
|
echo "slapd: 172.17.0.0/255.255.0.0 127.0.0.1 : ALLOW" >> /etc/hosts.allow
|
||||||
|
echo "slapd: ALL : DENY" >> /etc/hosts.allow
|
||||||
|
|
||||||
|
touch /var/lib/ldap/docker_bootstrapped
|
||||||
|
|
||||||
|
else
|
||||||
|
status "slapd database found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
############ Custom config ############
|
||||||
|
if [ ! -e /etc/ldap/slapd.d/docker_bootstrapped ]; then
|
||||||
|
status "Custom config"
|
||||||
|
|
||||||
|
slapd -h "ldapi:///" -u openldap -g openldap
|
||||||
|
chown -R openldap:openldap /etc/ldap
|
||||||
|
|
||||||
|
if [ "$WITH_MMC_AGENT" = true ]; then
|
||||||
|
|
||||||
|
# Convert needed mmc ldap schema to ldif
|
||||||
|
mkdir -p /etc/ldap/schema/converted
|
||||||
|
slaptest -f /etc/mmc/agent/assets/convert_to_ldif -F /etc/ldap/schema/converted
|
||||||
|
|
||||||
|
sed -i -e 's/^dn:.*$/dn: cn=mmc,cn=schema,cn=config/; s/^cn:.*$/cn: mmc/; /^structuralObjectClass:.*$/d; /^entryUUID:.*$/d; /^creatorsName:.*$/d; /^createTimestamp:.*$/d; /^entryCSN:.*$/d; /^modifiersName:.*$/d; /^modifyTimestamp:.*$/d' /etc/ldap/schema/converted/cn\=config/cn\=schema/cn=\{4\}mmc.ldif
|
||||||
|
|
||||||
|
sed -i -e 's/^dn:.*$/dn: cn=mail,cn=schema,cn=config/; s/^cn:.*$/cn: mail/; /^structuralObjectClass:.*$/d; /^entryUUID:.*$/d; /^creatorsName:.*$/d; /^createTimestamp:.*$/d; /^entryCSN:.*$/d; /^modifiersName:.*$/d; /^modifyTimestamp:.*$/d' /etc/ldap/schema/converted/cn\=config/cn\=schema/cn=\{5\}mail.ldif
|
||||||
|
|
||||||
|
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/converted/cn\=config/cn\=schema/cn=\{4\}mmc.ldif -Q
|
||||||
|
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/converted/cn\=config/cn\=schema/cn=\{5\}mail.ldif -Q
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# TLS
|
||||||
|
if [ -e /etc/ldap/ssl/ldap.crt ] && [ -e /etc/ldap/ssl/ldap.key ] && [ -e /etc/ldap/ssl/ca.crt ]; then
|
||||||
|
status "certificates found"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
# generate default tls certificate
|
||||||
|
export SSL_SLAPD_COMMON_NAME="$DOMAIN_NAME"
|
||||||
|
export SSL_SLAPD_ORGANIZATION="${LDAP_ORGANISATION}"
|
||||||
|
|
||||||
|
/sbin/ssl-gnutls-create-signed-cert slapd /etc/ldap/ssl/ldap.crt /etc/ldap/ssl/ldap.key
|
||||||
|
ln -s /etc/ssl/certs/docker_baseimage_gnutls_cacert.pem /etc/ldap/ssl/ca.crt
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Fix permission on certificates
|
||||||
|
chown openldap:openldap -R /etc/ldap/ssl
|
||||||
|
chmod 600 /etc/ldap/ssl/ldap.key
|
||||||
|
|
||||||
|
# ldap client config
|
||||||
|
sed -i 's,TLS_CACERT.*,TLS_CACERT /etc/ldap/ssl/ca.crt,g' /etc/ldap/ldap.conf
|
||||||
|
|
||||||
|
# create DHParamFile if not found
|
||||||
|
[ -f /etc/ldap/ssl/dhparam.pem ] || openssl dhparam -out /etc/ldap/ssl/dhparam.pem 2048
|
||||||
|
|
||||||
|
ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/config/modify/auto/tls.ldif -Q
|
||||||
|
|
||||||
|
# add fake dnsmasq route to certificate cn
|
||||||
|
cn=$(openssl x509 -in /etc/ldap/ssl/ldap.crt -subject -noout | sed -n 's/.*CN=\(.*\)\/*\(.*\)/\1/p')
|
||||||
|
/sbin/dns-add-host 127.0.0.1 $cn
|
||||||
|
|
||||||
|
# Replication
|
||||||
|
# todo :)
|
||||||
|
|
||||||
|
# Add config
|
||||||
|
for f in $(find /etc/ldap/config/add -maxdepth 1 -name \*.ldif -type f); do
|
||||||
|
status "Processing file ${f}"
|
||||||
|
ldapadd -Y EXTERNAL -H ldapi:/// -f $f -Q
|
||||||
|
done
|
||||||
|
|
||||||
|
# Modify config
|
||||||
|
for f in $(find /etc/ldap/config/modify -maxdepth 1 -name \*.ldif -type f); do
|
||||||
|
status "Processing file ${f}"
|
||||||
|
ldapmodify -Y EXTERNAL -H ldapi:/// -f $f -Q
|
||||||
|
done
|
||||||
|
|
||||||
|
kill -INT `cat /run/slapd/slapd.pid`
|
||||||
|
|
||||||
|
touch /etc/ldap/slapd.d/docker_bootstrapped
|
||||||
|
|
||||||
|
else
|
||||||
|
status "found already-configured slapd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
status "starting slapd on default port 389"
|
||||||
|
set -x
|
||||||
|
|
||||||
|
exec /usr/sbin/slapd -h "ldap:///" -u openldap -g openldap -d -1
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
status () {
|
|
||||||
echo "---> ${@}" >&2
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
set -x
|
|
||||||
: LDAP_ADMIN_PWD=${LDAP_ADMIN_PWD}
|
|
||||||
: LDAP_DOMAIN=${LDAP_DOMAIN}
|
|
||||||
: LDAP_ORGANISATION=${LDAP_ORGANISATION}
|
|
||||||
|
|
||||||
|
|
||||||
############ Base config ############
|
|
||||||
if [ ! -e /var/lib/ldap/docker_bootstrapped ]; then
|
|
||||||
status "configuring slapd database"
|
|
||||||
|
|
||||||
cat <<EOF | debconf-set-selections
|
|
||||||
slapd slapd/internal/generated_adminpw password ${LDAP_ADMIN_PWD}
|
|
||||||
slapd slapd/internal/adminpw password ${LDAP_ADMIN_PWD}
|
|
||||||
slapd slapd/password2 password ${LDAP_ADMIN_PWD}
|
|
||||||
slapd slapd/password1 password ${LDAP_ADMIN_PWD}
|
|
||||||
slapd slapd/dump_database_destdir string /var/backups/slapd-VERSION
|
|
||||||
slapd slapd/domain string ${LDAP_DOMAIN}
|
|
||||||
slapd shared/organization string ${LDAP_ORGANISATION}
|
|
||||||
slapd slapd/backend string HDB
|
|
||||||
slapd slapd/purge_database boolean true
|
|
||||||
slapd slapd/move_old_database boolean true
|
|
||||||
slapd slapd/allow_ldap_v2 boolean false
|
|
||||||
slapd slapd/no_configuration boolean false
|
|
||||||
slapd slapd/dump_database select when needed
|
|
||||||
EOF
|
|
||||||
|
|
||||||
dpkg-reconfigure -f noninteractive slapd
|
|
||||||
|
|
||||||
touch /var/lib/ldap/docker_bootstrapped
|
|
||||||
|
|
||||||
else
|
|
||||||
status "slapd database found"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
############ Custom config ############
|
|
||||||
if [ ! -e /etc/ldap/config/docker_bootstrapped ]; then
|
|
||||||
status "Custom config"
|
|
||||||
|
|
||||||
slapd -h "ldapi:///" -u openldap -g openldap
|
|
||||||
chown -R openldap:openldap /etc/ldap
|
|
||||||
|
|
||||||
# TLS
|
|
||||||
if [ -e /etc/ldap/ssl/ldap.crt ] && [ -e /etc/ldap/ssl/ldap.key ] && [ -e /etc/ldap/ssl/ca.crt ]; then
|
|
||||||
status "certificates found"
|
|
||||||
|
|
||||||
chmod 600 /etc/ldap/ssl/ldap.key
|
|
||||||
|
|
||||||
# create DHParamFile if not found
|
|
||||||
[ -f /etc/ldap/ssl/dhparam.pem ] || openssl dhparam -out /etc/ldap/ssl/dhparam.pem 2048
|
|
||||||
|
|
||||||
ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/config/auto/tls.ldif -Q
|
|
||||||
|
|
||||||
# add fake dnsmasq route to certificate cn
|
|
||||||
cn=$(openssl x509 -in /etc/ldap/ssl/ldap.crt -subject -noout | sed -n 's/.*CN=\(.*\)\/*\(.*\)/\1/p')
|
|
||||||
echo "127.0.0.1 " $cn >> /etc/dhosts
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Replication
|
|
||||||
# todo :)
|
|
||||||
|
|
||||||
# Other config files
|
|
||||||
for f in $(find /etc/ldap/config -maxdepth 1 -name \*.ldif -type f); do
|
|
||||||
status "Processing file ${f}"
|
|
||||||
ldapmodify -Y EXTERNAL -H ldapi:/// -f $f -Q
|
|
||||||
done
|
|
||||||
|
|
||||||
kill -INT `cat /run/slapd/slapd.pid`
|
|
||||||
|
|
||||||
touch /etc/ldap/config/docker_bootstrapped
|
|
||||||
|
|
||||||
else
|
|
||||||
status "found already-configured slapd"
|
|
||||||
fi
|
|
||||||
|
|
||||||
status "starting slapd on default port 389"
|
|
||||||
set -x
|
|
||||||
exec /usr/sbin/slapd -h "ldap:///" -u openldap -g openldap -d -1
|
|
||||||
Executable
+15
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Usage
|
||||||
|
# sudo ./test.sh
|
||||||
|
# add -v for verbose mode (or type whatever you like !) :p
|
||||||
|
|
||||||
|
. test/config-repository
|
||||||
|
. test/tools/run.sh
|
||||||
|
|
||||||
|
run_test simple.sh "dn: dc=example,dc=com"
|
||||||
|
run_test tls.sh "dn: dc=example,dc=com"
|
||||||
|
run_test db.sh "dn: dc=otherdomain,dc=com"
|
||||||
|
|
||||||
|
. test/tools/end.sh
|
||||||
|
|
||||||
@@ -2,55 +2,15 @@
|
|||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
# sudo ./test.sh
|
# sudo ./test.sh
|
||||||
# add -v for verbose mode
|
# add -v for verbose mode (or type whatever you like !) :p
|
||||||
|
|
||||||
verbose=$1
|
. test/config
|
||||||
error=0
|
. test/tools/run.sh
|
||||||
ok=0
|
|
||||||
|
|
||||||
echo_start () {
|
run_test tools/build-container.sh "Successfully built"
|
||||||
echo "------- Start $* test -------"
|
run_test simple.sh "dn: dc=example,dc=com"
|
||||||
}
|
run_test tls.sh "dn: dc=example,dc=com"
|
||||||
|
run_test db.sh "dn: dc=otherdomain,dc=com"
|
||||||
|
|
||||||
echo_error () {
|
. test/tools/end.sh
|
||||||
echo "\n$(tput setaf 1)/!\ $* failed$(tput sgr0)\n"
|
|
||||||
error=`expr $error + 1`
|
|
||||||
}
|
|
||||||
|
|
||||||
echo_ok () {
|
|
||||||
echo "\n--> $* ok\n"
|
|
||||||
ok=`expr $ok + 1`
|
|
||||||
}
|
|
||||||
|
|
||||||
run_test () {
|
|
||||||
fction=$1
|
|
||||||
out=test/test.out
|
|
||||||
|
|
||||||
echo_start $fction
|
|
||||||
|
|
||||||
if [ -z ${verbose} ]; then
|
|
||||||
./test/$1.sh > $out 2>&1
|
|
||||||
else
|
|
||||||
./test/$1.sh | tee $out 2>&1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$(grep -c "$2" $out)" -eq 0 ]; then
|
|
||||||
echo_error $fction
|
|
||||||
else
|
|
||||||
echo_ok $fction
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm $out
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
./test/tools/prepare.sh > /dev/null 2>&1
|
|
||||||
run_test build "Successfully built"
|
|
||||||
run_test simple "dn: dc=example,dc=com"
|
|
||||||
run_test tls "dn: dc=example,dc=com"
|
|
||||||
run_test db "dn: dc=otherdomain,dc=com"
|
|
||||||
./test/tools/end.sh > /dev/null 2>&1
|
|
||||||
|
|
||||||
echo "------- Test finished -------"
|
|
||||||
echo $error " failed " $ok " passed"
|
|
||||||
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
dir=$(dirname $0)
|
|
||||||
. $dir/tools/config.prop
|
|
||||||
|
|
||||||
docker.io build -t $openldapTestImage .
|
|
||||||
#docker.io build --no-cache=true -t $openldapTestImage .
|
|
||||||
|
|
||||||
Executable
+8
@@ -0,0 +1,8 @@
|
|||||||
|
testImage=openldap-test
|
||||||
|
testContainer=openldap-test-container
|
||||||
|
testDir=/osixia-test-docker-openldap
|
||||||
|
|
||||||
|
export testImage
|
||||||
|
export testContainer
|
||||||
|
export testDir
|
||||||
|
|
||||||
Executable
+7
@@ -0,0 +1,7 @@
|
|||||||
|
testImage=osixia/openldap:latest
|
||||||
|
testContainer=openldap-repository-test-container
|
||||||
|
testDir=/osixia-repository-test-docker-openldap
|
||||||
|
|
||||||
|
export testImage
|
||||||
|
export testContainer
|
||||||
|
export testDir
|
||||||
+14
-12
@@ -1,23 +1,25 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
dir=$(dirname $0)
|
dir=$(dirname $0)
|
||||||
. $dir/tools/config.prop
|
|
||||||
|
|
||||||
if [ -d "$openldapTestDir" ]; then
|
if [ -d "$testDir" ]; then
|
||||||
rm -r $openldapTestDir
|
rm -r $testDir
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir $openldapTestDir
|
mkdir $testDir
|
||||||
mkdir $openldapTestDir/db
|
mkdir $testDir/db
|
||||||
mkdir $openldapTestDir/config
|
mkdir $testDir/config
|
||||||
|
|
||||||
runOptions="-e LDAP_DOMAIN=otherdomain.com -v $openldapTestDir/db:/var/lib/ldap -v $openldapTestDir/config:/etc/ldap/slapd.d"
|
runOptions="-e LDAP_DOMAIN=otherdomain.com -v $testDir/db:/var/lib/ldap -v $testDir/config:/etc/ldap/slapd.d"
|
||||||
. $dir/tools/run-simple.sh
|
. $dir/tools/run-container.sh
|
||||||
|
sleep 30
|
||||||
$dir/tools/delete-container.sh
|
$dir/tools/delete-container.sh
|
||||||
|
|
||||||
runOptions="-v $openldapTestDir/db:/var/lib/ldap -v $openldapTestDir/config:/etc/ldap/slapd.d"
|
runOptions="-v $testDir/db:/var/lib/ldap -v $testDir/config:/etc/ldap/slapd.d"
|
||||||
. $dir/tools/run-simple.sh
|
. $dir/tools/run-container.sh
|
||||||
ldapsearch -x -h localhost -p 65389 -b dc=otherdomain,dc=com
|
sleep 30
|
||||||
|
echo "ldapsearch -x -h $IP -b dc=otherdomain,dc=com"
|
||||||
|
ldapsearch -x -h $IP -b dc=otherdomain,dc=com
|
||||||
|
|
||||||
rm -r $openldapTestDir
|
rm -r $testDir
|
||||||
$dir/tools/delete-container.sh
|
$dir/tools/delete-container.sh
|
||||||
+4
-3
@@ -1,9 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
dir=$(dirname $0)
|
dir=$(dirname $0)
|
||||||
. $dir/tools/config.prop
|
. $dir/tools/run-container.sh
|
||||||
|
|
||||||
. $dir/tools/run-simple.sh
|
echo "ldapsearch -x -h $IP -b dc=example,dc=com"
|
||||||
ldapsearch -x -h localhost -p 65389 -b dc=example,dc=com
|
sleep 30
|
||||||
|
ldapsearch -x -h $IP -b dc=example,dc=com
|
||||||
|
|
||||||
$dir/tools/delete-container.sh
|
$dir/tools/delete-container.sh
|
||||||
+5
-4
@@ -1,9 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
dir=$(dirname $0)
|
dir=$(dirname $0)
|
||||||
. $dir/tools/config.prop
|
. $dir/tls/run.sh
|
||||||
|
|
||||||
. $dir/tools/run-tls.sh
|
echo "ldapsearch -x -h $certCN -b dc=example,dc=com -ZZ"
|
||||||
ldapsearch -x -h $certCN -p 65389 -b dc=example,dc=com -ZZ
|
sleep 30
|
||||||
|
ldapsearch -x -h $certCN -b dc=example,dc=com -ZZ
|
||||||
|
|
||||||
. $dir/tools/end-tls.sh
|
. $dir/tls/end.sh
|
||||||
File renamed without changes.
@@ -1,12 +1,12 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
runOptions="--dns=127.0.0.1 -v `pwd`/test/ssl:/etc/ldap/ssl"
|
runOptions="--dns=127.0.0.1 -v `pwd`/test/tls/ssl:/etc/ldap/ssl"
|
||||||
. $dir/tools/run-simple.sh
|
. $dir/tools/run-container.sh
|
||||||
|
|
||||||
cert=$(echo $dir/ssl/ldap.crt)
|
cert=$(echo $dir/tls/ssl/ldap.crt)
|
||||||
certCN=$(openssl x509 -in $cert -subject -noout | sed -n 's/.*CN=\(.*\)\/*\(.*\)/\1/p')
|
certCN=$(openssl x509 -in $cert -subject -noout | sed -n 's/.*CN=\(.*\)\/*\(.*\)/\1/p')
|
||||||
addLine=$(echo "127.0.0.1" $certCN)
|
addLine=$(echo $IP $certCN)
|
||||||
|
|
||||||
echo $addLine >> /etc/hosts
|
echo $addLine >> /etc/hosts
|
||||||
cp /etc/ldap/ldap.conf /etc/ldap/ldap.conf.old
|
cp /etc/ldap/ldap.conf /etc/ldap/ldap.conf.old
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
docker build -t $testImage .
|
||||||
|
#docker build --no-cache=true -t $testImage .
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
openldapTestImage=openldap-test
|
|
||||||
openldapTestContainer=openldap-test-container
|
|
||||||
openldapTestDir=/osixia-test-docker-openldap
|
|
||||||
@@ -1,11 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
. $(dirname $0)/config.prop
|
# remove test container
|
||||||
|
res=$(docker ps -a | grep -c "$testContainer")
|
||||||
# remove openldap test container
|
|
||||||
res=$(docker.io ps -a | grep -c "$openldapTestContainer")
|
|
||||||
|
|
||||||
if [ $res -ne 0 ]; then
|
if [ $res -ne 0 ]; then
|
||||||
docker.io stop $openldapTestContainer
|
docker stop $testContainer
|
||||||
docker.io rm $openldapTestContainer
|
docker rm $testContainer
|
||||||
fi
|
fi
|
||||||
@@ -1,10 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
. $(dirname $0)/config.prop
|
# remove test image
|
||||||
|
res=$(docker images | grep -c "$testImage")
|
||||||
# remove openldap test image
|
|
||||||
res=$(docker.io images | grep -c "$openldapTestImage")
|
|
||||||
|
|
||||||
if [ $res -ne 0 ]; then
|
if [ $res -ne 0 ]; then
|
||||||
docker.io rmi $openldapTestImage
|
docker rmi $testImage
|
||||||
fi
|
fi
|
||||||
+13
-3
@@ -1,5 +1,15 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
dir=$(dirname $0)
|
|
||||||
$dir/delete-container.sh
|
rm -rf $testDir
|
||||||
$dir/delete-image.sh
|
./test/tools/delete-container.sh
|
||||||
|
./test/tools/delete-image.sh > /dev/null 2>&1
|
||||||
|
|
||||||
|
echo "------- End -------"
|
||||||
|
echo $error " failed " $ok " succeeded"
|
||||||
|
|
||||||
|
if [ "$error" -eq 0 ]; then
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir -p $testDir
|
||||||
|
|
||||||
dir=$(dirname $0)
|
dir=$(dirname $0)
|
||||||
$dir/delete-container.sh
|
$dir/delete-container.sh
|
||||||
$dir/delete-image.sh
|
$dir/delete-image.sh
|
||||||
Executable
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "docker run --name $testContainer $runOptions -d $testImage $runCommand /sbin/my_init --enable-insecure-key"
|
||||||
|
ID=`docker run --name $testContainer $runOptions -d $testImage $runCommand /sbin/my_init --enable-insecure-key`
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
echo " --> Obtaining IP"
|
||||||
|
IP=`docker inspect -f "{{ .NetworkSettings.IPAddress }}" $ID`
|
||||||
|
if [ "$IP" = "" ]; then
|
||||||
|
abort "Unable to obtain container IP"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo " -->" $IP
|
||||||
|
fi
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
echo "docker.io run --name $openldapTestContainer $runOptions -p 65389:389 -d $openldapTestImage"
|
|
||||||
docker.io run --name $openldapTestContainer $runOptions -p 65389:389 -d $openldapTestImage
|
|
||||||
sleep 5
|
|
||||||
Executable
+46
@@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Usage
|
||||||
|
# sudo ./test.sh
|
||||||
|
# add -v for verbose mode (or type whatever you like !) :p
|
||||||
|
|
||||||
|
verbose=$1
|
||||||
|
error=0
|
||||||
|
ok=0
|
||||||
|
|
||||||
|
echo_start () {
|
||||||
|
echo "------- Test: $* -------"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_error () {
|
||||||
|
echo "\n$(tput setaf 1)/!\ $* failed$(tput sgr0)\n"
|
||||||
|
error=`expr $error + 1`
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_ok () {
|
||||||
|
echo "\n--> $* ok\n"
|
||||||
|
ok=`expr $ok + 1`
|
||||||
|
}
|
||||||
|
|
||||||
|
run_test () {
|
||||||
|
test=$1
|
||||||
|
out=test/test.out
|
||||||
|
|
||||||
|
echo_start $test
|
||||||
|
|
||||||
|
if [ -z ${verbose} ]; then
|
||||||
|
./test/$test > $out 2>&1
|
||||||
|
else
|
||||||
|
./test/$test | tee $out 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(grep -c "$2" $out)" -eq 0 ]; then
|
||||||
|
echo_error $test
|
||||||
|
else
|
||||||
|
echo_ok $test
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm $out
|
||||||
|
}
|
||||||
|
|
||||||
|
./test/tools/prepare.sh > /dev/null 2>&1
|
||||||
Reference in new issue
Block a user