ldap 服务器无法访问导致 plone/zope 服务器关闭

ldap server unreachable cause plone/zope server down

我有一个带有 plone.app.ldap 附加组件的 plone 安装 (4.2.5)。有一个启用了 plone-ldap 的站点,我们的 ldap 服务器已更改为另一个 domain/IP。依此类推,zope 服务器在 plone-ldap 检索 ldap 信息时停止运行。即使是 root ZMI 也没什么用。

对服务器的任何请求在 plone 重启后几秒内不会加载任何内容。因此,我无法通过我们的站点或 ZMI 界面重新配置我们的新 ldap 服务器。

在这种情况下,我该如何继续在 plone-ldap 组件上重新配置新的 ldap 服务器?是否有一些类似于 ZMI 的脚本应用程序可以执行此操作?这是一个已知错误吗?

一些日志:

1) Zeoserver.log

2016-06-06T15:52:04 new connection ('127.0.0.1', 40051): <ManagedServerConnection ('127.0.0.1', 40051)>
2016-06-06T15:52:04 (127.0.0.1:40049) received handshake 'Z3101'
2016-06-06T15:52:04 (unconnected) disconnected
2016-06-06T15:52:04 (unconnected) disconnected
2016-06-06T15:52:08 new connection ('127.0.0.1', 40052): <ManagedServerConnection ('127.0.0.1', 40052)>
2016-06-06T15:52:08 new connection ('127.0.0.1', 40053): <ManagedServerConnection ('127.0.0.1', 40053)>
2016-06-06T15:52:08 new connection ('127.0.0.1', 40054): **<ManagedServerConnection ('127.0.0.1', 40054)>
2016-06-06T15:52:08 (127.0.0.1:40052) received handshake 'Z3101'
2016-06-06T15:52:08 (unconnected) disconnected
2016-06-06T15:52:08 (unconnected) disconnected**

2) client1/event.log

2016-06-06T15:53:12 ERROR event.LDAPDelegate {'desc': "Can't contact LDAP server"}
Traceback (most recent call last):
  File "/usr/local/Plone/buildout-cache/eggs/Products.LDAPUserFolder-2.26-py2.7.egg/Products/LDAPUserFolder/LDAPDelegate.py", line 366, in search
    connection = self.connect(bind_dn=bind_dn, bind_pwd=bind_pwd)
  File "/usr/local/Plone/buildout-cache/eggs/Products.LDAPUserFolder-2.26-py2.7.egg/Products/LDAPUserFolder/LDAPDelegate.py", line 265, in connect
    raise e
**SERVER_DOWN: {'desc': "Can't contact LDAP server"}**

先备份

免责声明 - 我以前从未见过 LDAP 配置还冻结根级管理员 ZMI 对 Plone 站点的访问。

我可以快速建议您从站点 acl_users 中删除 ldap 插件并从头开始。

由于 ZMI 不可用,您必须使用控制台访问。 为此 运行 zope 实例如下:

$ bin/instance debug

(其中 "instance" 是您的实例之一)

您可以删除 ldap 插件:

del app.Plone.acl_users['ldap-plugin-id']

其中 Plone 是您网站的 is,ldap-plugin-id 是 LDAP 插件的 is。 如果你不记得了,就在这组里找:

app.Plone.acl_users.objectValues()

最后你必须坚持你的改变:

import transaction;transaction.commit()

...然后使用 CTRL+D

退出

现在您必须能够访问 ZMI,并且您必须创建并重新配置一个新插件。

请注意:配置 LDAP 或 AD 插件时,请始终设置 "Connection timout" 和 "Operation timeout"。这可能就是您的访问尝试完全冻结实例的原因。