Did anyone run pas.plugins.ldap successfully with plone 6.0.9? OR have any other LDAP solution?

pas.plugins.ldap install succeed,make start-backend failed(install other add-ons is OK).

Traceback (most recent call last):
File "/home/portal/backend/lib/python3.10/site-packages/zope/configuration/xmlconfig.py", line 393, in endElementNS
self.context.end()
File "/home/portal/backend/lib/python3.10/site-packages/zope/configuration/config.py", line 701, in end
self.stack.pop().finish()
File "/home/portal/backend/lib/python3.10/site-packages/zope/configuration/config.py", line 868, in finish
args = toargs(context, *self.argdata)
File "/home/portal/backend/lib/python3.10/site-packages/zope/configuration/config.py", line 1698, in toargs
args[str(name)] = field.fromUnicode(s)
File "/home/portal/backend/lib/python3.10/site-packages/zope/configuration/fields.py", line 272, in fromUnicode
v = vt.fromUnicode(s)
File "/home/portal/backend/lib/python3.10/site-packages/zope/configuration/fields.py", line 174, in fromUnicode
value = self.context.resolve(name)
File "/home/portal/backend/lib/python3.10/site-packages/zope/configuration/config.py", line 223, in resolve
import(mname)
File "/home/portal/backend/lib/python3.10/site-packages/yafowil/plone/autoform/form.py", line 35, in
from yafowil.plone.autoform.factories import widget_factory
File "/home/portal/backend/lib/python3.10/site-packages/yafowil/plone/autoform/factories.py", line 6, in
from plone.app.widgets.utils import get_ajaxselect_options
ImportError: cannot import name 'get_ajaxselect_options' from 'plone.app.widgets.utils' (unknown location)

From my own installation notes:

patch yafowil.plone.resources.py to comment out the 4 data.write lines that reference require.js
see yafowil.plone throws errors in Plone 6, because of requireJS · Issue #41 · bluedynamics/yafowil.plone · GitHub

def get_resources_content(self, resources):
    data = StringIO()
    #data.write('var mockup_require = require;\n')
    #data.write('var mockup_define = define;\n')
    data.write('require = undefined;\n')
    data.write('define = undefined;\n')
    self.read_resources_content(data, resources)
    #data.write('require = mockup_require;\n')
    #data.write('define = mockup_define;\n')

    return data.getvalue()

Edit: this seems to have been fixed here: Fix "ReferenceError: require is not defined" error. by alecghica · Pull Request #45 · bluedynamics/yafowil.plone · GitHub

1 Like

Well, this needs more love/ money/ project/ contributors here.

It works. Here my mx.ini to get it running:

[yafowil.plone]
url = ${settings:github}/bluedynamics/yafowil.plone.git
pushurl = ${settings:github-push}:bluedynamics/yafowil.plone.git
branch = master

[yafowil.bootstrap]
url = ${settings:github}/bluedynamics/yafowil.bootstrap.git
pushurl = ${settings:github-push}:bluedynamics/yafowil.plone.git
branch = 2.0

[pas.plugins.ldap]
url = ${settings:github}/collective/pas.plugins.ldap.git
branch = p6

And in the project I am using it, in contraints.txt I set node.ext.ldap==1.0.
I am not sure if this is required or just a leftover.

5 Likes

I have it running on a (testing) site with this pins: I did not notice any error so far:

# pas.plugins.ldap eggs
bda.cache = 1.3.0
five.globalrequest = 99.1
node = 1.2.1
node.ext.ldap = 1.2
node.ext.ugm = 1.1
odict = 1.9.0
pas.plugins.ldap = 1.8.2
passlib = 1.7.4
plumber = 1.7
pyasn1 = 0.5.0
pyasn1-modules = 0.3.0
python-ldap = 3.4.3
yafowil = 3.1.0
yafowil.bootstrap = 2.0.0a1
yafowil.plone = 5.0.0a1
yafowil.widget.array = 1.7
yafowil.widget.dict = 1.8
yafowil.yaml = 2.0
2 Likes

Use yafowil.plone 5.0.0a1

1 Like

Thank you for your kindly help, but when I run make build-backend, I got this error:

File "/usr/lib/python3.10/configparser.py", line 508, in _interpolate_some
    raise InterpolationMissingOptionError(
configparser.InterpolationMissingOptionError: Bad value substitution: option 'url' in section 'yafowil.plone' contains an interpolation key 'settings:github' which is not a valid option name. Raw value: '${settings:github}/bluedynamics/yafowil.plone.git'
make[1]: *** [Makefile:112: build-dev] Error 1

Thank you so much! It's work!

Got it, thank you!

1 Like

@alert @ericof @jensens I am trying to install LDAP support on a Plone 6.1.1 website. So, I modified the mx.ini file as follows:

[settings]
github = https://github.com
github-push = git@github.com
main-package = -e .[test]

[yafowil.plone]
url = ${settings:github}/bluedynamics/yafowil.plone.git
pushurl = ${settings:github-push}:bluedynamics/yafowil.plone.git
branch = master

[yafowil.bootstrap]
url = ${settings:github}/conestack/yafowil.bootstrap.git
pushurl = ${settings:github-push}:bluedynamics/yafowil.plone.git
branch = 2.0

[pas.plugins.ldap]
url = ${settings:github}/collective/pas.plugins.ldap.git
branch = p6

So, I executed the following command make backend-build

It did not show any construction errors. So, I executed the following command make backend-start it shows:

+ dirname /home/macagua/projects/project-title/Makefile
+ make -C ./backend/ start
make[1]: Entering directory '/home/macagua/projects/project-title/backend'
+ which uv
+ dirname /home/macagua/projects/project-title/backend/Makefile
+ dirname /home/macagua/projects/project-title/backend/Makefile
+ dirname /home/macagua/projects/project-title/backend/Makefile
+ dirname /home/macagua/projects/project-title/backend/Makefile
+ dirname /home/macagua/projects/project-title/backend/Makefile
+ dirname /home/macagua/projects/project-title/backend/Makefile
+ dirname /home/macagua/projects/project-title/backend/Makefile
+ dirname /home/macagua/projects/project-title/backend/Makefile
+ dirname /home/macagua/projects/project-title/backend/Makefile
+ dirname /home/macagua/projects/project-title/backend/Makefile
+ dirname /home/macagua/projects/project-title/backend/Makefile
+ uv run runwsgi instance/etc/zope.ini
🐎 This Python uses horse-with-no-namespace to make pkg_resources namespace packages compatible with PEP 420 namespace packages.
2025-06-20 18:10:20,184 INFO    [chameleon.config:39][MainThread] directory cache: /home/macagua/projects/project-title/backend/instance/var/cache.
2025-06-20 18:10:23,926 INFO    [plone.restapi.patches:16][MainThread] PATCH: Disabled ZPublisher.HTTPRequest.ZopeFieldStorage.VALUE_LIMIT. This enables file uploads larger than 1MB.
2025-06-20 18:10:24,937 INFO    [plone.app.event:18][MainThread] icalendar has been set up to use pytz instead of zoneinfo.
2025-06-20 18:10:27,914 INFO    [plone.volto:22][MainThread] Aliasing collective.folderish classes to plone.volto classes.
2025-06-20 18:10:35,419 INFO    [Zope:42][MainThread] Ready to handle requests
Starting server in PID 98524.
2025-06-20 18:10:35,427 INFO    [waitress:449][MainThread] Serving on http://127.0.0.1:8080

So, I access to Site Setup > Add-ons > LDAP/ Active Directory Support and activate it, and it shows the following error:

2025-06-20 18:19:38,036 INFO    [Products.GenericSetup.tool:1421][waitress-2] Importing profile profile-pas.plugins.ldap.plonecontrolpanel:default with dependency strategy upgrade.
2025-06-20 18:19:38,037 INFO    [Products.GenericSetup.tool:1472][waitress-2] Applying profile profile-pas.plugins.ldap:default
2025-06-20 18:19:38,045 INFO    [GenericSetup.rolemap:98][waitress-2] Role / permission map imported.
2025-06-20 18:19:38,047 INFO    [Products.CMFPlone.resources.browser.resource:320][waitress-2] Updated resource registry mtime.
2025-06-20 18:19:38,048 INFO    [Products.GenericSetup.tool:1472][waitress-2] Applying profile profile-yafowil.plone:default
2025-06-20 18:19:38,057 INFO    [GenericSetup.browserlayer:98][waitress-2] Browser layers imported
2025-06-20 18:19:38,063 INFO    [GenericSetup.rolemap:98][waitress-2] Role / permission map imported.
2025-06-20 18:19:38,065 INFO    [Products.CMFPlone.resources.browser.resource:320][waitress-2] Updated resource registry mtime.
2025-06-20 18:19:38,065 INFO    [Products.GenericSetup.tool:1462][waitress-2] Applying main profile profile-pas.plugins.ldap.plonecontrolpanel:default
2025-06-20 18:19:38,071 INFO    [GenericSetup.controlpanel:98][waitress-2] Control panel imported.
2025-06-20 18:19:38,077 INFO    [GenericSetup.rolemap:98][waitress-2] Role / permission map imported.
2025-06-20 18:19:38,081 INFO    [GenericSetup.pas.plugins.ldap:98][waitress-2] Imported ldap settings.
2025-06-20 18:19:38,082 INFO    [Products.CMFPlone.resources.browser.resource:320][waitress-2] Updated resource registry mtime.
2025-06-20 18:19:48,117 ERROR   [pas.plugins.ldap:100][waitress-1] LDAPError in authenticateCredentials
Traceback (most recent call last):
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 972, in _apply_method_s
    return func(self,*args,**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 248, in simple_bind_s
    msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 242, in simple_bind
    return self._ldap_call(self._l.simple_bind,who,cred,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 128, in _ldap_call
    result = func(*args,**kwargs)
             ^^^^^^^^^^^^^^^^^^^^
ldap.SERVER_DOWN: {'result': -1, 'desc': "Can't contact LDAP server", 'errno': 107, 'ctrls': [], 'info': 'Transport endpoint is not connected'}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/macagua/proyectos/notacool/imd/project-title/backend/sources/pas.plugins.ldap/src/pas/plugins/ldap/plugin.py", line 87, in _wrapper
    result = original_method(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/proyectos/notacool/imd/project-title/backend/sources/pas.plugins.ldap/src/pas/plugins/ldap/plugin.py", line 235, in authenticateCredentials
    userid = users.authenticate(login, pw)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/utils.py", line 281, in wrapped
    f_result = func(*args, **kws)
               ^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/ugm/_api.py", line 785, in authenticate
    user_id = self.id_for_login(login)
              ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/ugm/_api.py", line 771, in id_for_login
    res = self.context.search(criteria=criteria, attrlist=attrlist)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/utils.py", line 281, in wrapped
    f_result = func(*args, **kws)
               ^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/_node.py", line 512, in search
    matches = self.ldap_session.search(
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/session.py", line 44, in search
    res = self._communicator.search(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/base.py", line 290, in search
    return _search(*args)
           ^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/base.py", line 250, in _search
    self.ensure_connection()
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/base.py", line 213, in ensure_connection
    self.bind()
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/base.py", line 201, in bind
    self._con = self._connector.bind()
                ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/base.py", line 142, in bind
    self._con.simple_bind_s(self._bindDN, self._bindPW)
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 989, in simple_bind_s
    res = self._apply_method_s(SimpleLDAPObject.simple_bind_s,*args,**kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 975, in _apply_method_s
    self.reconnect(self._uri,retry_max=self._retry_max,retry_delay=self._retry_delay,force=True)
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 943, in reconnect
    self._apply_last_bind()
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 907, in _apply_last_bind
    SimpleLDAPObject.simple_bind_s(self, None, None)
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 248, in simple_bind_s
    msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 242, in simple_bind
    return self._ldap_call(self._l.simple_bind,who,cred,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 128, in _ldap_call
    result = func(*args,**kwargs)
             ^^^^^^^^^^^^^^^^^^^^
ldap.SERVER_DOWN: {'result': -1, 'desc': "Can't contact LDAP server", 'errno': 107, 'ctrls': [], 'info': 'Transport endpoint is not connected'}

Any idea what happens?

The Versions Overview are:

  • Plone 6.1.1 (6108)
  • CMF 3.7
  • Zope 5.13
  • Python 3.12.11 (main, Jun 18 2025, 19:09:13) [GCC 12.2.0]
  • PIL 11.0.0 (Pillow)
  • WSGI: On
  • Server: waitress 3.0.2

My mx.ini, works in all Plone 6.1.1 installations

[settings]
version-overrides =
    yafowil.plone==5.0.0a2
    yafowil.bootstrap==2.0.0a1
    yafowil.widget.array==2.0a1
    yafowil.widget.dict==2.0a1

pas.plugin.ldap can use in the latest version from pip, no pinning needed

you need also python-ldap prerequisites Installing python-ldap — python-ldap 3.4.3 documentation

1 Like

@1letter here my response:

My backend/mx.ini file:

[settings]
main-package = -e .[test]

version-overrides =
    yafowil.plone==5.0.0a2
    yafowil.bootstrap==2.0.0a1
    yafowil.widget.array==2.0a1
    yafowil.widget.dict==2.0a1

My backend/pyproject.toml file:

...
dependencies = [
    "Products.CMFPlone==6.1.1",
    "plone.api",
    "plone.restapi",
    "plone.volto",
    "pas.plugins.ldap",
]
...

So, I executed the following command make backend-build && make backend-start, It did not show any construction errors and when started the Plone instance.

So, I access to Site Setup > Add-ons > LDAP/ Active Directory Support and activate it, and it shows the following error:

2025-06-20 21:35:11,001 INFO    [Products.GenericSetup.tool:1421][waitress-1] Importing profile profile-pas.plugins.ldap.plonecontrolpanel:default with dependency strategy upgrade.
2025-06-20 21:35:11,002 INFO    [Products.GenericSetup.tool:1472][waitress-1] Applying profile profile-pas.plugins.ldap:default
2025-06-20 21:35:11,029 INFO    [GenericSetup.rolemap:98][waitress-1] Role / permission map imported.
2025-06-20 21:35:11,032 INFO    [Products.CMFPlone.resources.browser.resource:320][waitress-1] Updated resource registry mtime.
2025-06-20 21:35:11,033 INFO    [Products.GenericSetup.tool:1472][waitress-1] Applying profile profile-yafowil.plone:default
2025-06-20 21:35:11,046 INFO    [GenericSetup.browserlayer:98][waitress-1] Browser layers imported
2025-06-20 21:35:11,055 INFO    [GenericSetup.rolemap:98][waitress-1] Role / permission map imported.
2025-06-20 21:35:11,055 INFO    [Products.CMFPlone.resources.browser.resource:320][waitress-1] Updated resource registry mtime.
2025-06-20 21:35:11,056 INFO    [Products.GenericSetup.tool:1462][waitress-1] Applying main profile profile-pas.plugins.ldap.plonecontrolpanel:default
2025-06-20 21:35:11,065 INFO    [GenericSetup.controlpanel:98][waitress-1] Control panel imported.
2025-06-20 21:35:11,071 INFO    [GenericSetup.rolemap:98][waitress-1] Role / permission map imported.
2025-06-20 21:35:11,074 INFO    [GenericSetup.pas.plugins.ldap:98][waitress-1] Imported ldap settings.
2025-06-20 21:35:11,075 INFO    [Products.CMFPlone.resources.browser.resource:320][waitress-1] Updated resource registry mtime.
2025-06-20 21:35:21,124 ERROR   [pas.plugins.ldap:100][waitress-0] LDAPError in authenticateCredentials
Traceback (most recent call last):
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 972, in _apply_method_s
    return func(self,*args,**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 248, in simple_bind_s
    msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 242, in simple_bind
    return self._ldap_call(self._l.simple_bind,who,cred,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 128, in _ldap_call
    result = func(*args,**kwargs)
             ^^^^^^^^^^^^^^^^^^^^
ldap.SERVER_DOWN: {'result': -1, 'desc': "Can't contact LDAP server", 'errno': 107, 'ctrls': [], 'info': 'Transport endpoint is not connected'}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/macagua/projects/project-title/project-title/backend/sources/pas.plugins.ldap/src/pas/plugins/ldap/plugin.py", line 87, in _wrapper
    result = original_method(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/project-title/backend/sources/pas.plugins.ldap/src/pas/plugins/ldap/plugin.py", line 235, in authenticateCredentials
    userid = users.authenticate(login, pw)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/utils.py", line 281, in wrapped
    f_result = func(*args, **kws)
               ^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/ugm/_api.py", line 785, in authenticate
    user_id = self.id_for_login(login)
              ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/ugm/_api.py", line 771, in id_for_login
    res = self.context.search(criteria=criteria, attrlist=attrlist)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/utils.py", line 281, in wrapped
    f_result = func(*args, **kws)
               ^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/_node.py", line 512, in search
    matches = self.ldap_session.search(
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/session.py", line 44, in search
    res = self._communicator.search(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/base.py", line 290, in search
    return _search(*args)
           ^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/base.py", line 250, in _search
    self.ensure_connection()
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/base.py", line 213, in ensure_connection
    self.bind()
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/base.py", line 201, in bind
    self._con = self._connector.bind()
                ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/node/ext/ldap/base.py", line 142, in bind
    self._con.simple_bind_s(self._bindDN, self._bindPW)
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 989, in simple_bind_s
    res = self._apply_method_s(SimpleLDAPObject.simple_bind_s,*args,**kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 975, in _apply_method_s
    self.reconnect(self._uri,retry_max=self._retry_max,retry_delay=self._retry_delay,force=True)
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 943, in reconnect
    self._apply_last_bind()
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 907, in _apply_last_bind
    SimpleLDAPObject.simple_bind_s(self, None, None)
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 248, in simple_bind_s
    msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 242, in simple_bind
    return self._ldap_call(self._l.simple_bind,who,cred,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/macagua/projects/project-title/.venv/lib/python3.12/site-packages/ldap/ldapobject.py", line 128, in _ldap_call
    result = func(*args,**kwargs)
             ^^^^^^^^^^^^^^^^^^^^
ldap.SERVER_DOWN: {'result': -1, 'desc': "Can't contact LDAP server", 'errno': 107, 'ctrls': [], 'info': 'Transport endpoint is not connected'}

Also, if I access to Site Setup > Add-ons > LDAP/ Active Directory Support can you see the following info message:

In the past Plone versions, if a Plone add-on can't be remove from a Plone site, that was a criterion of poor quality of an add-on.

I don't want to fill the production environment with a module that is not working properly.

Any idea?

It seems that everything installed fine, but that pas.plugins.ldap cannot connect to the ldap server. Is it running, correct address, etc.

2 Likes

have you configured you connection properly? server, username, password...etc?

1 Like

For that reason there are testing environments, where you can test new code, with a content copy from production, and not having to worry about the live env and can wipe and recreate testing env if needed.

As @jensens mentioned: this addon can use some community love. It is essential for many setups. Also not something you would want to uninstall. But an uninstall profile isn’t likely that hard to add.

For VMM we created an ldapsetup package that we install in multiple sites to preconfigure the whole ldap setup. I think we could release a generic version of that as an.example collective package. Saves a lot of hassle in ldap setup and centralizes the config.

1 Like

Ok, now I understand, the last time I tested in production the pas.plugins.ldap addon with a Plone 4 when installing it did not try to connect to the LDAP server automatically, since I only installed the pas.plugins.ldap addon I did not configure anything. I will try to test it in a test environment with access to a LDAP server.

Thanks @fredvd

Just I only installed the pas.plugins.ldap addon I did not configure anything. I will try to test it in a test environment with access to a LDAP server.

Thanks @1letter

Lol. We already did. 6 years ago. Could use an update for plone 6 probably.

1 Like

@fredvd Hi :slight_smile:

You are right, I have requested a test environment to test this package with an LDAP server accessible from a Plone 6.

I will try to add this an uninstall profile for this package.

2 Likes

I did some work on the p6 branch. Test are fine again (refactored the setup), uses pyproject.toml/hatchling and a fresh mxmake configuration now, also open PRs into p6 are merged.

It needs a rebase of main (conflicts expected, mostly to take stuff from p6 branch I guess) and then it is ready for merge and a 2.0 release.

Anyone who can test the branch in real world scenarios? More love needed!

1 Like

Yes i can test it