2020-11-10 16:52:52 +00:00
|
|
|
import logging
|
2023-05-24 15:06:13 +00:00
|
|
|
import os
|
2021-12-20 22:57:27 +00:00
|
|
|
|
2021-04-02 13:47:46 +00:00
|
|
|
import slapd
|
2020-11-10 16:52:52 +00:00
|
|
|
|
2023-05-24 15:06:13 +00:00
|
|
|
schemas = [
|
|
|
|
schema
|
|
|
|
for schema in [
|
|
|
|
"core.ldif",
|
|
|
|
"cosine.ldif",
|
|
|
|
"nis.ldif",
|
|
|
|
"inetorgperson.ldif",
|
2022-11-01 11:25:21 +00:00
|
|
|
"ppolicy.ldif",
|
2023-05-24 15:06:13 +00:00
|
|
|
]
|
|
|
|
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",
|
2023-12-27 09:57:22 +00:00
|
|
|
"../canaille/backends/ldap/schemas/oauth2-openldap.ldif",
|
2023-05-24 15:06:13 +00:00
|
|
|
]
|
2020-11-10 16:52:52 +00:00
|
|
|
|
2021-04-02 13:47:46 +00:00
|
|
|
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,
|
2023-05-24 15:06:13 +00:00
|
|
|
schemas=schemas,
|
2020-11-15 17:32:03 +00:00
|
|
|
)
|
2020-11-10 16:52:52 +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",
|
2022-12-06 17:17:32 +00:00
|
|
|
"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
|
2020-11-10 16:52:52 +00:00
|
|
|
|
2023-12-27 09:57:22 +00:00
|
|
|
slapd.logger.info("slapd initialized: all ldif files loaded")
|
2020-11-10 16:52:52 +00:00
|
|
|
slapd.wait()
|
|
|
|
finally:
|
|
|
|
slapd.stop()
|