临时slapd启动器,用于测试目的
项目描述
volatildap 为针对 LDAP 数据库测试代码提供简单的辅助工具。
其主要功能包括
简单配置: 不提供任何内容;LDAP 服务器将使用合理的默认值启动
内置清理: 一旦测试结束/测试进程退出,服务器将立即删除
跨发行版设置: 自动发现系统路径,例如 OpenLDAP 二进制文件、模式等。
用法
import volatildap
class MyTests(unittest.TestCase):
@classmethod
def setUpClass(cls):
super(MyTests, cls).setUpClass()
cls._slapd = volatildap.LdapServer(suffix='dc=example,dc=org')
def setUp(self):
# Will start the server, or reset/restart it if already started from a previous test.
self._slapd.start()
def test_something(self):
conn = ldap.connection(self._slapd.uri)
# Do some tests
def test_with_data(self):
# Load some data
self._slapd.add({'ou=people': {'cn': [b'Users']}})
# Run the tests
volatildap.LdapServer 提供了一些有用的方法
- start()
启动或重启服务器。这将
清除所有数据(如果有)
如果服务器尚未运行,则启动服务器
填充初始数据
- stop()
停止服务器。
这将清理所有数据并终止进程。
- wait()
等待服务器请求停止。
主要用于以其他方式控制服务器,或使用 volatildap 服务器作为开发实例。
- add(data)
添加一些数据,请参见下面的 initial_data 结构。
- get(dn)
通过其唯一名称检索对象;
返回一个字典,将属性映射到其值的列表,以字节形式。
如果底层数据库不知道唯一名称,将引发 KeyError。
- add_ldif(contents)
添加LDIF文件的行 - 内容应为字节。
- get_ldif(dn)
返回LDIF文件的一个条目作为行列表
- reset()
将服务器恢复到其原始、初始状态。这包括加载初始数据。
它还公开以下属性
- uri
用于连接服务器的URI(例如 ldap://localhost:10389/)
- rootdn
管理员账户的唯一定名
- rootpw
管理员账户的密码
- suffix
LDAP服务器使用的后缀
- port
LDAP服务器监听的TCP端口
- host
LDAP服务器监听的hostname
- tls_config
一个命名元组,包含TLS属性。唯一保证的属性是 tls_config.root,其中包含PEM格式的服务器证书。
配置
volatildap.LdapServer 类接受一些参数
- suffix
用于LDAP树的suffix
默认: dc=example,dc=org
- rootdn
LDAP服务器的管理员账户
默认: cn=testadmin,dc=example,dc=org
- rootpw
管理员密码。
默认: 一个随机值,可通过 LdapServer.rootpw 获取
- schemas
要加载的schema列表;可以是简单名称(例如 cosine.schema;在openldap安装中查找)或自定义路径。
默认: ['core.schema']
- initial_data
将唯一定名映射到属性/值字典的字典
slapd(initial_data={ 'ou=people': { 'objectClass': ['organizationalUnit'], 'cn': ['People'], }, })
注意:在添加数据时,可以省略对象DN的suffix。
默认: {}
- skip_missing_schemas
在加载schema时,此标志指示 volatildap 如果某些schema找不到则继续。
默认: False
- port
要使用的端口。
默认: 系统上可用的TCP端口
- host
监听的hostname或IP。
默认: localhost
- slapd_debug
slapd的调试级别;见 slapd.conf
默认: 0
- max_server_startup_delay
允许服务器启动的最大延迟,以秒为单位。
默认: 30
- tls_config
用于配置服务器的TLS证书文件集。为 localhost 提供了一个有效的集合 volatildap.LOCALHOST_TLS_CONFIG,但用户也可以提供自己的
tls_config = volatildap.TLSConfig( root=read(ca_path), chain=[ read(intermediate_path), ], certificate=read(certificate_path), key=read(key_path), )
命令行
volatildap提供命令行入口以简化操作: python -m volatildap.cli
其用法如下
usage: cli.py [-h] [--port PORT] [--host HOST] [--suffix SUFFIX]
[--rootdn ROOTDN] [--rootpw ROOTPW] [--debug DEBUG]
[--control CONTROL] [--initial INITIAL]
[--schemas [SCHEMAS [SCHEMAS ...]]] [--tls]
optional arguments:
-h, --help show this help message and exit
--port PORT Port to listen on; empty for a dynamic port
--host HOST Host to listen on; defaults to localhost
--suffix SUFFIX LDAP suffix
--rootdn ROOTDN Distinguished Name of LDAP admin user
--rootpw ROOTPW Password of LDAP admin user
--debug DEBUG slapd debug level
--control CONTROL Start the HTTP control server on this address
--initial INITIAL Load initial objects from the provided LDIF file
--schemas [SCHEMAS [SCHEMAS ...]]
Schemas to load (multi-valued)
--tls Enable TLS, using a built-in stack
远程控制
一旦启动了此类服务器,如果提供了控制服务器(例如 --control :10380),则可以启动Python代理以控制它
def setUpClass(cls):
super().setUpClass()
cls._slapd = volatildap.ProxyServer('http://localhost:10380')
代理将提供正常实例上的所有命令: reset、start、stop、add、add_ldif、get、get_ldif。
只读属性也适用:uri、suffix、rootdn、rootpw、port、host、tls_config。
当使用TLS时,可以通过proxy.tls_config.root访问服务器的根证书颁发机构。
特定发行版的特点
- Ubuntu
在Ubuntu下,默认的AppArmor策略不允许slapd(LDAP守护进程)读取临时文件夹。用户应更新/etc/apparmor.d/usr.sbin.slapd文件,并在此处添加/tmp/** rwk,。使用k选项以获取对文件的锁定。用户还必须添加一个包含其家目录路径的行。使用变量$HOME不会起作用,因此您必须添加完整路径。例如:/path/to/my/home/** rw,。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
volatildap-1.5.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3d9c9cc39cfed706b9a3da3bc3a2f369987807e4d4eaaddf313a994cf8a77f3c |
|
MD5 | 20f52daaff36e16d6d1907cc87cf879c |
|
BLAKE2b-256 | 5e83c9b717a5e21df5be1f16d91486e10b388480d0fdc3e52a500495ee396315 |
volatildap-1.5.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 732dfc459dd49c75e9e13e1c7bf96cb33a835d4ee7c9716205fae3fcaee6b9e5 |
|
MD5 | 1ddb0f23ff2d606f5db11e2aa89cbd77 |
|
BLAKE2b-256 | 80b608e7989fc479a2efa10d40347acbf29eb7ba5d6f4465b770663c727b458a |