canaille-globuzma/demo/ldap-server.py

50 lines
1 KiB
Python
Raw Permalink Normal View History

import logging
import os
2021-12-20 22:57:27 +00:00
import slapd
schemas = [
schema
for schema in [
"core.ldif",
"cosine.ldif",
"nis.ldif",
"inetorgperson.ldif",
2022-11-01 11:25:21 +00:00
"ppolicy.ldif",
]
if os.path.exists(os.path.join(slapd.Slapd.SCHEMADIR, schema))
] + [
"ldif/memberof-config.ldif",
"ldif/refint-config.ldif",
2022-11-01 11:25:21 +00:00
"ldif/ppolicy-config.ldif",
"ldif/otp-config.ldif",
2023-12-27 09:57:22 +00:00
"../canaille/backends/ldap/schemas/oauth2-openldap.ldif",
]
slapd = slapd.Slapd(
2020-11-15 17:32:03 +00:00
suffix="dc=mydomain,dc=tld",
root_cn="admin",
root_pw="admin",
port=5389,
log_level=logging.INFO,
schemas=schemas,
2020-11-15 17:32:03 +00:00
)
slapd.start()
try:
2023-12-27 09:57:22 +00:00
slapd.init_tree()
2022-11-15 11:47:44 +00:00
for ldif in (
2022-11-01 11:25:21 +00:00
"ldif/ppolicy.ldif",
"ldif/bootstrap-users-tree.ldif",
"ldif/bootstrap-oidc-tree.ldif",
2022-11-15 11:47:44 +00:00
):
2023-12-27 09:57:22 +00:00
try:
slapd.ldapadd(None, ["-f", ldif])
except RuntimeError:
pass
2023-12-27 09:57:22 +00:00
slapd.logger.info("slapd initialized: all ldif files loaded")
slapd.wait()
finally:
slapd.stop()