临时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 testsvolatildap.LdapServer 提供了一些有用的方法
- start()
- 启动或重启服务器。这将 - 清除所有数据(如果有) 
- 如果服务器尚未运行,则启动服务器 
- 填充初始数据 
 
- stop()
- 停止服务器。 - 这将清理所有数据并终止进程。 
- wait()
- 等待服务器请求停止。 - 主要用于以其他方式控制服务器,或使用 volatildap 服务器作为开发实例。 
- add(data)
- 添加一些数据,请参见下面的 initial_data 结构。 
- get(dn)
- 通过其唯一名称检索对象; - 返回一个字典,将属性映射到其值的列表,以字节形式。 - 如果底层数据库不知道唯一名称,将引发 KeyError。 
- add_ldif(contents)
- 添加LDIF文件的行 - 内容应为字节。 
- get_ldif(dn)
- 返回LDIF文件的一个条目作为行列表 
- reset()
- 将服务器恢复到其原始、初始状态。这包括加载初始数据。 
它还公开以下属性
- uri
- 用于连接服务器的URI(例如 ldap://: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('https://: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 |