Author SHA1 Message Date
Bertrand Gouny bc0dd766d2 merge 2015-01-15 15:40:17 +01:00
osixia 9964ef4491 Merge branch 'hotfix-0.9.2' into stable 2014-12-30 17:01:24 +01:00
osixia c0aef5c88e close #1 2014-12-30 16:47:28 +01:00
osixia a377d17e5a [twgit] Init hotfix 'hotfix-0.9.2'. 2014-12-30 16:41:39 +01:00
Bertrand Gouny 78e3ae88e2 pb mmc agent 2014-11-24 14:05:01 +01:00
Bertrand Gouny 01f8d8ddcf baseimage version 2014-11-07 15:50:43 +01:00
Bertrand Gouny dc2ec09f22 gnutls 2014-11-07 15:30:41 +01:00
Bertrand Gouny ad1de4a196 files 2014-11-06 18:22:18 +01:00
Bertrand Gouny 41dd9c581e pioup 2014-10-21 17:51:54 +02:00
Bertrand Gouny 79387d1f4e add TLS by default 2014-10-21 16:58:49 +02:00
osixia 9a3d247903 dockerfile 2014-10-16 21:20:50 +02:00
Bertrand Gouny a659aba3ce new base image version 2014-10-15 17:56:17 +02:00
Bertrand Gouny 680bfa91f7 rename Changelog to CHANGELOG 2014-08-29 17:57:19 +02:00
Bertrand Gouny f1a9dd1b78 rename Changelog to CHANGELOG 2014-08-29 17:55:55 +02:00
Bertrand Gouny 69b7e8fdfe changelog 2014-08-29 17:45:55 +02:00
Bertrand Gouny f5d4c7b5c5 docker.io to docker 2014-08-29 17:41:13 +02:00
Bertrand Gouny c788c20245 mmc-agent is back 2014-08-27 17:55:45 +02:00
Bertrand Gouny 731d92cb2e new baseimage 2014-08-26 15:23:47 +02:00
Bertrand Gouny 09b8595d62 new ldif schema 2014-08-26 11:45:41 +02:00
osixia e893fff3c8 mmc ldif 2014-08-25 22:03:17 +02:00
Bertrand Gouny 234448a2f6 mmc-agent 2014-08-22 16:44:54 +02:00
Bertrand Gouny f689d38735 mmc 2014-08-21 17:45:48 +02:00
Bertrand Gouny ea98e31808 [twgit] Init feature 'feature-postfix-link'. 2014-08-21 14:48:48 +02:00
Bertrand Gouny 7eae1e4547 Merge branch 'hotfix-0.9.1' into stable 2014-07-17 10:37:55 +02:00
Bertrand Gouny 17a6c73799 version 2014-07-17 10:37:49 +02:00
Bertrand Gouny b7459175e1 [twgit] Init hotfix 'hotfix-0.9.1'. 2014-07-17 10:25:10 +02:00
Bertrand Gouny b68b62a130 Merge branch 'release-0.9.0' into stable 2014-07-16 22:48:37 +02:00
Bertrand Gouny 4ecd6c7ba7 version 2014-07-16 22:33:31 +02:00
Bertrand Gouny 1546818b81 merge 2014-07-16 22:32:44 +02:00
Bertrand Gouny 6fd179601b Merge branch 'feature-makefile' into release-0.9.0 2014-07-16 22:30:54 +02:00
Bertrand Gouny 13b7a0624e [twgit] Init release 'release-0.9.0'. 2014-07-16 22:30:23 +02:00
Bertrand Gouny fe18497e16 tests 2014-07-16 22:23:59 +02:00
osixia 8e9be9c75b Rename LICENSE.txt to LICENSE 2014-07-02 17:19:55 +02:00
Bertrand Gouny db173a2dc9 makefile 2014-06-24 17:55:39 +02:00
Bertrand Gouny 899389b581 [twgit] Init feature 'feature-makefile'. 2014-06-24 17:55:18 +02:00
Bertrand Gouny 62defdfd95 tests 2014-06-24 17:46:50 +02:00
Bertrand Gouny a07ed80902 [twgit] Init feature 'feature-tests'. 2014-06-24 17:46:22 +02:00
Bertrand Gouny a75d5c401e Merge branch 'release-0.8.0' into stable 2014-06-24 15:38:28 +02:00
Bertrand Gouny 8e81c4574d version 2014-06-24 15:33:22 +02:00
Bertrand Gouny e4a4f6a667 Merge branch 'feature-makefile' into release-0.8.0 2014-06-24 15:14:44 +02:00
Bertrand Gouny a9f7f47e9a Merge branch 'feature-new-tests' into release-0.8.0 2014-06-24 15:14:31 +02:00
Bertrand Gouny e11220fb96 Merge branch 'feature-new-baseimage' into release-0.8.0 2014-06-24 15:14:19 +02:00
Bertrand Gouny d36e3dd10e [twgit] Init release 'release-0.8.0'. 2014-06-24 15:11:46 +02:00
Bertrand Gouny b7a2691545 base 2014-06-24 15:04:49 +02:00
Bertrand Gouny d4e039a2bf [twgit] Init feature 'feature-new-baseimage'. 2014-06-24 15:01:44 +02:00
Bertrand Gouny 6cfd595bd5 nouveaux tests 2014-06-23 21:30:04 +02:00
Bertrand Gouny e553d3749d [twgit] Init feature 'feature-new-tests'. 2014-06-23 19:20:51 +02:00
Bertrand Gouny 1b6dab9852 makefile 2014-06-22 17:48:54 +02:00
Bertrand Gouny ea563acee9 [twgit] Init feature 'feature-makefile'. 2014-06-22 17:03:25 +02:00
Bertrand Gouny 0a1e79690e Merge branch 'hotfix-0.7.4' into stable 2014-06-19 15:52:22 +02:00
Bertrand Gouny 378207027a delete image 2014-06-19 14:55:02 +02:00
Bertrand Gouny d245c07803 use osixia/baseimage:0.4.0 2014-06-19 14:50:06 +02:00
Bertrand Gouny 6849077ee8 [twgit] Init hotfix 'hotfix-0.7.4'. 2014-06-19 14:49:15 +02:00
Bertrand Gouny 35904aa284 Merge branch 'hotfix-0.7.3' into stable 2014-06-19 13:50:48 +02:00
Bertrand Gouny 3ae806c51f retour utilisateur openldap 2014-06-18 23:03:01 +02:00
Bertrand Gouny 1e2512c998 [twgit] Init hotfix 'hotfix-0.7.3'. 2014-06-18 23:02:30 +02:00
Bertrand Gouny 9531804222 Merge branch 'hotfix-0.7.2' into stable 2014-06-18 17:29:34 +02:00
Bertrand Gouny faeb220686 pb droits 2014-06-18 17:29:25 +02:00
Bertrand Gouny 987d044727 [twgit] Init hotfix 'hotfix-0.7.2'. 2014-06-18 17:28:24 +02:00
Bertrand Gouny ba0b83ad27 Merge branch 'hotfix-0.7.1' into stable 2014-06-18 17:12:31 +02:00
Bertrand Gouny ccaf1cf6bc correction utilisateur slapd deamon 2014-06-18 17:12:22 +02:00
Bertrand Gouny e303d10740 [twgit] Init hotfix 'hotfix-0.7.1'. 2014-06-18 17:07:08 +02:00
Bertrand Gouny b4de6adb08 Merge branch 'release-0.7.0' into stable 2014-06-18 09:39:24 +02:00
Bertrand Gouny b98fb70cd4 Merge branch 'feature-new-tests' into release-0.7.0 2014-06-18 09:37:13 +02:00
Bertrand Gouny e936973e9c merge 2014-06-18 09:36:08 +02:00
Bertrand Gouny 223c040565 [twgit] Init release 'release-0.7.0'. 2014-06-18 09:32:05 +02:00
Bertrand Gouny 940c5afc4f new tests 2014-06-18 09:31:50 +02:00
Bertrand Gouny 857e692b3c news tests 2014-06-17 21:40:31 +02:00
Bertrand Gouny e7efbceae8 [twgit] Init feature 'feature-new-tests'. 2014-06-17 20:54:57 +02:00
Bertrand Gouny 87fea6c869 Merge branch 'hotfix-0.6.2' into stable 2014-06-17 09:43:26 +02:00
Bertrand Gouny c32c1683ed reorganisation code 2014-06-17 09:43:13 +02:00
Bertrand Gouny 5606ef1938 [twgit] Init hotfix 'hotfix-0.6.2'. 2014-06-17 09:28:20 +02:00
osixia 5125257293 Update README.md 2014-06-17 09:26:56 +02:00
osixia 2c6ceec151 Create LICENSE.txt 2014-06-17 09:26:42 +02:00
osixia d9f06d5579 Update README.md 2014-06-17 09:12:15 +02:00
osixia a31e2ce8bd Update README.md 2014-06-17 09:10:50 +02:00
Bertrand Gouny 676d3d736d Merge branch 'hotfix-0.6.1' into stable 2014-05-09 15:57:15 +02:00
Bertrand Gouny a413a31ed3 nouvelle baseimage + maj tests 2014-05-09 15:57:03 +02:00
Bertrand Gouny c00342523e [twgit] Init hotfix 'hotfix-0.6.1'. 2014-05-09 15:25:39 +02:00
35 changed files with 461 additions and 205 deletions

No files matched your search

View File
Whitespace-only changes.
+29 -15
View File
@@ -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/*
+21
View File
@@ -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.
+22
View File
@@ -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' :)"
+2 -1
View File
@@ -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
+6
View File
@@ -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
+94
View File
@@ -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.
+129
View File
@@ -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
-88
View File
@@ -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
+15
View File
@@ -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
+8 -48
View File
@@ -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"
-8
View File
@@ -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
View File
@@ -0,0 +1,8 @@
testImage=openldap-test
testContainer=openldap-test-container
testDir=/osixia-test-docker-openldap
export testImage
export testContainer
export testDir
+7
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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.
+4 -4
View File
@@ -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.
+5
View File
@@ -0,0 +1,5 @@
#!/bin/sh
docker build -t $testImage .
#docker build --no-cache=true -t $testImage .
-3
View File
@@ -1,3 +0,0 @@
openldapTestImage=openldap-test
openldapTestContainer=openldap-test-container
openldapTestDir=/osixia-test-docker-openldap
+4 -6
View File
@@ -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
+3 -5
View File
@@ -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
View File
@@ -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
+2
View File
@@ -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
+14
View File
@@ -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
-5
View File
@@ -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
+46
View File
@@ -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