TroLL
07/07/2025, 9:20 PMlldap:2025-07-06-debian breaks this config for Radicale: https://github.com/lldap/lldap/blob/main/example_configs/radicale.md
Namely, I get an error [ERROR] An exception occurred during PROPFIND request on '/': invalid attribute uid when using lldap:2025-07-06-debian but lldap/lldap:2025-05-19-debian works perfectly fine.TroLL
07/07/2025, 9:30 PM2025-07-07T21:26:03.380816521+00:00 DEBUG ๐ [debug]: decided upon suite TLS13_AES_256_GCM_SHA384 | log.target: "rustls::server::hs" | log.module_path: "rustls::server::hs" | log.file: "/__w/lldap/lldap/${GITHUB_WORKSPACE}/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rustls-0.20.9/src/server/hs.rs" | log.line: 382
2025-07-07T21:26:03.398333166+00:00 INFO ๏ฝ [info]: LDAP session start: 3fc5bf8f-25c8-44fb-8c19-64c701f55fd1
2025-07-07T21:26:03.403007277+00:00 INFO LDAP request [ 434ms | 0.10% / 100.00% ] session_id: 3fc5bf8f-25c8-44fb-8c19-64c701f55fd1
2025-07-07T21:26:03.403045203+00:00 DEBUG โโ ๐ [debug]: | msg: LdapMsg { msgid: 4, op: BindRequest(LdapBindRequest { dn: "uid=read-admin,ou=people,dc=example,dc=eu", cred: LdapBindCred::Simple }), ctrl: [] }
2025-07-07T21:26:03.403055148+00:00 DEBUG โโ do_bind [ 434ms | 0.00% / 99.90% ] dn: uid=read-admin,ou=people,dc=example,dc=eu
2025-07-07T21:26:03.403088815+00:00 DEBUG โ โโ bind [ 432ms | 0.00% / 99.48% ]
2025-07-07T21:26:03.403101666+00:00 DEBUG โ โ โโ get_password_file_for_user [ 660ยตs | 0.15% ] user_id: "read-admin"
2025-07-07T21:26:03.403914355+00:00 INFO โ โ โโ ๏ฝ [info]: Login attempt for "read-admin"
2025-07-07T21:26:03.403923929+00:00 DEBUG โ โ โโ passwords_match [ 432ms | 99.33% ] username: read-admin
2025-07-07T21:26:03.835498549+00:00 DEBUG โ โโ get_user_groups [ 1.83ms | 0.42% ] user_id: "read-admin"
2025-07-07T21:26:03.838179912+00:00 DEBUG โ โ โโ ๐ [debug]: | return: {GroupDetails { group_id: 3, display_name: "lldap_strict_readonly", creation_date: 2025-03-01T11:23:29.752244695, uuid: "b157607c-fc60-321b-ab4c-1f562bfcc6a3", attributes: [] }, GroupDetails { group_id: 1, display_name: "lldap_admin", creation_date: 2025-03-01T11:23:29.729415989, uuid: "9ac3c53f-eeeb-3de1-8a70-32d3e294a4ce", attributes: [] }}
2025-07-07T21:26:03.838210949+00:00 DEBUG โ โโ ๐ [debug]: Success!TroLL
07/07/2025, 9:30 PM2025-07-07T21:26:03.838239208+00:00 DEBUG โโ ๐ [debug]: | response: BindResponse(LdapBindResponse { res: LdapResult { code: Success, matcheddn: "", message: "", referral: [] }, saslcreds: None })
2025-07-07T21:26:03.846086999+00:00 INFO LDAP request [ 489ยตs | 100.00% ] session_id: 3fc5bf8f-25c8-44fb-8c19-64c701f55fd1
2025-07-07T21:26:03.846137370+00:00 DEBUG โโ ๐ [debug]: | msg: LdapMsg { msgid: 5, op: SearchRequest(LdapSearchRequest { base: "", scope: Base, aliases: Always, sizelimit: 0, timelimit: 0, typesonly: false, filter: Present("objectClass"), attrs: ["subschemaSubentry", "+"] }), ctrl: [] }
2025-07-07T21:26:03.846147296+00:00 DEBUG โโ ๐ [debug]: rootDSE requestTroLL
07/07/2025, 9:30 PM2025-07-07T21:26:03.846208833+00:00 DEBUG โโ ๐ [debug]: | response: SearchResultEntry(LdapSearchResultEntry { dn: "", attributes: [LdapPartialAttribute { atype: "objectClass", vals: ["top"] }, LdapPartialAttribute { atype: "vendorName", vals: ["LLDAP"] }, LdapPartialAttribute { atype: "vendorVersion", vals: ["lldap_0.1.0"] }, LdapPartialAttribute { atype: "supportedLDAPVersion", vals: ["3"] }, LdapPartialAttribute { atype: "supportedExtension", vals: ["1.3.6.1.4.1.4203.1.11.1", "1.3.6.1.4.1.4203.1.11.3"] }, LdapPartialAttribute { atype: "supportedControl", vals: [] }, LdapPartialAttribute { atype: "supportedFeatures", vals: ["1.3.6.1.4.1.4203.1.5.1"] }, LdapPartialAttribute { atype: "defaultNamingContext", vals: ["dc=example,dc=eu"] }, LdapPartialAttribute { atype: "namingContexts", vals: ["dc=example,dc=eu"] }, LdapPartialAttribute { atype: "isGlobalCatalogReady", vals: ["false"] }, LdapPartialAttribute { atype: "subschemaSubentry", vals: ["cn=Subschema"] }] })
2025-07-07T21:26:03.846515075+00:00 DEBUG โโ ๐ [debug]: | response: SearchResultDone(LdapResult { code: Success, matcheddn: "", message: "", referral: [] })
2025-07-07T21:26:03.898107562+00:00 INFO LDAP request [ 1.93ms | 100.00% ] session_id: 3fc5bf8f-25c8-44fb-8c19-64c701f55fd1
2025-07-07T21:26:03.898154173+00:00 DEBUG โโ ๐ [debug]: | msg: LdapMsg { msgid: 6, op: SearchRequest(LdapSearchRequest { base: "cn=Subschema", scope: Base, aliases: Always, sizelimit: 0, timelimit: 0, typesonly: false, filter: Equality("objectClass", "subschema"), attrs: ["objectClasses", "attributeTypes", "ldapSyntaxes", "matchingRules", "matchingRuleUse", "dITContentRules", "dITStructureRules", "nameForms", "createTimestamp", "modifyTimestamp", "*", "+"] }), ctrl: [] }TroLL
07/07/2025, 9:31 PM2025-07-07T21:26:03.898163877+00:00 DEBUG โโ ๐ [debug]: Schema request
2025-07-07T21:26:03.899522735+00:00 DEBUG โโ ๐ [debug]: | response: SearchResultEntry(LdapSearchResultEntry { dn: "cn=Subschema", attributes: [LdapPartialAttribute { atype: "structuralObjectClass", vals: ["subentry"] }, LdapPartialAttribute { atype: "objectClass", vals: ["top", "subentry", "subschema", "extensibleObject"] }, LdapPartialAttribute { atype: "cn", vals: ["Subschema"] }, LdapPartialAttribute { atype: "createTimestamp", vals: ["20250707212603Z"] }, LdapPartialAttribute { atype: "modifyTimestamp", vals: ["20250707212603Z"] }, LdapPartialAttribute { atype: "ldapSyntaxes", vals: ["( 1.3.6.1.4.1.1466.115.121.1.15 DESC 'Directory String' )", "( 1.3.6.1.4.1.1466.115.121.1.24 DESC 'Generalized Time' )", "( 1.3.6.1.4.1.1466.115.121.1.27 DESC 'Integer' )", "( 1.3.6.1.4.1.1466.115.121.1.28 DESC 'JPEG' X-NOT-HUMAN-READABLE 'TRUE' )"] }, LdapPartialAttribute { atype: "attributeTypes", vals: ["( 2.0 NAME 'String' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", "( 2.1 NAME 'Integer' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", "( 2.2 NAME 'JpegPhoto' SYNTAX 1.3.6.1.4.1.1466.115.121.1.28 )", "( 2.3 NAME 'DateTime' SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )", "( 2.4 NAME 'avatar' DESC 'LLDAP: builtin attribute' SUP JpegPhoto )", "( 2.5 NAME 'creation_date' DESC 'LLDAP: builtin attribute' SUP DateTime )", "( 2.6 NAME 'display_name'TroLL
07/07/2025, 9:31 PMDESC 'LLDAP: builtin attribute' SUP String )", "( 2.7 NAME 'first_name' DESC 'LLDAP: builtin attribute' SUP String )", "( 2.8 NAME 'last_name' DESC 'LLDAP: builtin attribute' SUP String )", "( 2.9 NAME 'mail' DESC 'LLDAP: builtin attribute' SUP String )", "( 2.10 NAME 'user_id' DESC 'LLDAP: builtin attribute' SUP String )", "( 2.11 NAME 'uuid' DESC 'LLDAP: builtin attribute' SUP String )", "( 2.12 NAME 'creation_date' DESC 'LLDAP: builtin attribute' SUP DateTime )", "( 2.13 NAME 'display_name' DESC 'LLDAP: builtin attribute' SUP String )", "( 2.14 NAME 'group_id' DESC 'LLDAP: builtin attribute' SUP Integer )", "( 2.15 NAME 'uuid' DESC 'LLDAP: builtin attribute' SUP String )"] }, LdapPartialAttribute { atype: "objectClasses", vals: ["( 3.0 NAME ( 'inetOrgPerson' 'posixAccount' 'mailAccount' 'person' ) DESC 'LLDAP builtin: a person' STRUCTURAL MUST ( mail $ user_id ) MAY ( avatar $ creation_date $ display_name $ first_name $ last_name $ uuid ) )", "( 3.1 NAME ( 'groupOfUniqueNames' 'groupOfNames' ) DESC 'LLDAP builtin: a group' STRUCTURAL MUST ( display_name ) MAY ( creation_date $ group_id $ uuid ) )"] }, LdapPartialAttribute { atype: "subschemaSubentry", vals: ["cn=Subschema"] }] })
2025-07-07T21:26:03.900312127+00:00 DEBUG โโ ๐ [debug]: | response: SearchResultDone(LdapResult { code: Success, matcheddn: "", message: "", referral: [] })nitnelave
07/07/2025, 9:48 PMT0by
07/08/2025, 5:13 AMT0by
07/08/2025, 6:59 AMnitnelave
07/08/2025, 7:21 AMT0by
07/08/2025, 7:22 AMnitnelave
07/08/2025, 7:22 AMSearchRequest(LdapSearchRequest { base: "cn=Subschema", scope: Base, aliases: Always, sizelimit: 0, timelimit: 0, typesonly: false, filter: Equality("objectClass", "subschema"), attrs: ["objectClasses", "attributeTypes", "ldapSyntaxes", "matchingRules", "matchingRuleUse", "dITContentRules", "dITStructureRules", "nameForms", "createTimestamp", "modifyTimestamp", "*", "+"] }), ctrl: [] }nitnelave
07/08/2025, 7:23 AMnitnelave
07/08/2025, 7:23 AMnitnelave
07/08/2025, 7:24 AMT0by
07/08/2025, 7:26 AMuid, closest I got was uidNumber, but I think that's something differentnitnelave
07/08/2025, 7:26 AMnitnelave
07/08/2025, 7:27 AMnitnelave
07/08/2025, 7:27 AMnitnelave
07/08/2025, 7:28 AMT0by
07/08/2025, 7:29 AMnitnelave
07/08/2025, 7:29 AMnitnelave
07/08/2025, 7:30 AMT0by
07/08/2025, 7:32 AMnitnelave
07/08/2025, 7:33 AMnitnelave
07/08/2025, 7:33 AMT0by
07/08/2025, 7:33 AMnitnelave
07/08/2025, 7:34 AMT0by
07/08/2025, 7:34 AMT0by
07/08/2025, 7:36 AMattributeTypes: ( 0.9.2342.19200300.100.1.25 NAME ( 'dc' 'domainComponent' ) DESC 'RFC1274/2247: domain component' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
attributeTypes: ( 0.9.2342.19200300.100.1.1 NAME ( 'uid' 'userid' ) DESC 'RFC4519: user identifier' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
I think we should indeed implement theseT0by
07/08/2025, 7:37 AMT0by
07/08/2025, 7:39 AMT0by
07/08/2025, 7:40 AMnitnelave
07/08/2025, 7:42 AMT0by
07/08/2025, 10:00 AMTroLL
07/08/2025, 10:01 AMTroLL
07/08/2025, 10:51 AMT0by
07/08/2025, 10:51 AMTroLL
07/08/2025, 10:51 AMT0by
07/08/2025, 10:52 AMTroLL
07/08/2025, 10:52 AMT0by
07/08/2025, 10:52 AMTroLL
07/08/2025, 10:54 AMT0by
07/08/2025, 10:57 AMTroLL
07/08/2025, 11:38 AMTroLL
07/08/2025, 11:39 AMnitnelave
07/08/2025, 11:41 AMnitnelave
07/08/2025, 11:41 AMTroLL
07/08/2025, 11:41 AMTroLL
07/08/2025, 11:41 AMnitnelave
07/08/2025, 11:42 AMnitnelave
07/08/2025, 12:54 PMTroLL
07/08/2025, 12:55 PMnitnelave
07/08/2025, 12:55 PMTroLL
07/08/2025, 12:55 PMTroLL
07/08/2025, 12:56 PMnitnelave
07/08/2025, 12:56 PMTroLL
07/08/2025, 12:57 PMnitnelave
07/08/2025, 12:58 PMTroLL
07/08/2025, 12:58 PMT0by
07/08/2025, 1:44 PMTroLL
07/08/2025, 1:45 PMT0by
07/08/2025, 1:52 PMnitnelave
07/08/2025, 1:53 PMT0by
07/08/2025, 2:09 PMdocker
81.55 Compiling lldap v0.6.2-alpha (/app/server)
577.9 Finished `release` profile [optimized] target(s) in 9m 03s
581.5 [INFO]: Checking for the Wasm target...
581.7 [INFO]: Compiling to Wasm...
582.0 Compiling lldap_auth v0.6.0 (/app/crates/auth)
582.0 Compiling lldap_frontend_options v0.1.0 (/app/crates/frontend-options)
582.0 Compiling lldap_validation v0.6.0 (/app/crates/validation)
582.6 Compiling lldap_app v0.6.2-alpha (/app/app)
627.2 Finished `release` profile [optimized] target(s) in 45.43s
627.3 [INFO]: Installing wasm-bindgen...
631.8 Error: No such file or directory (os error 2)
631.8 Caused by: No such file or directory (os error 2)
631.8 gzip: pkg/lldap_app_bg.wasm: No such file or directoryTroLL
07/08/2025, 2:10 PMnitnelave
07/08/2025, 2:10 PMnitnelave
07/08/2025, 2:11 PMcargo run -- --verbose is enoughT0by
07/08/2025, 2:12 PMTroLL
07/08/2025, 3:02 PMTroLL
07/08/2025, 3:02 PMTroLL
07/08/2025, 3:02 PMnitnelave
07/08/2025, 3:03 PMTroLL
07/08/2025, 3:03 PMnitnelave
07/08/2025, 3:04 PMTroLL
07/08/2025, 3:04 PMnitnelave
07/08/2025, 3:04 PMnitnelave
07/08/2025, 3:04 PMTroLL
07/08/2025, 3:05 PMTroLL
07/08/2025, 3:08 PMTroLL
07/08/2025, 3:08 PMnitnelave
07/08/2025, 3:16 PMnitnelave
07/08/2025, 3:16 PMTroLL
07/08/2025, 4:32 PMTroLL
07/08/2025, 4:32 PMT0by
07/08/2025, 4:37 PMTroLL
07/08/2025, 4:37 PMTroLL
07/08/2025, 4:37 PMTroLL
07/08/2025, 4:38 PMT0by
07/08/2025, 4:38 PMTroLL
07/08/2025, 4:39 PMTroLL
07/08/2025, 4:39 PMT0by
07/08/2025, 4:40 PMT0by
07/08/2025, 4:40 PMTroLL
07/08/2025, 4:40 PMT0by
07/08/2025, 4:40 PMTroLL
07/08/2025, 4:41 PMTroLL
07/08/2025, 4:41 PMT0by
07/08/2025, 4:41 PMTroLL
07/08/2025, 4:41 PMTroLL
07/08/2025, 4:42 PMTroLL
07/08/2025, 4:47 PMTroLL
07/08/2025, 4:47 PMTroLL
07/08/2025, 4:51 PMTroLL
07/08/2025, 4:51 PMT0by
07/08/2025, 5:10 PMTroLL
07/08/2025, 5:16 PMnitnelave
07/08/2025, 5:17 PMTroLL
07/08/2025, 5:21 PM2025-07-08T17:15:11.072029553+00:00 INFO LDAP request [ 1.07ms | 100.00% ] session_id: e22c6d4b-bd89-4121-b891-2bc16cd7af2b
2025-07-08T17:15:11.072132349+00:00 DEBUG โโ ๐ [debug]: | msg: LdapMsg { msgid: 2, op: SearchRequest(LdapSearchRequest { base: "", scope: Base, aliases: Always, sizelimit: 0, timelimit: 0, typesonly: false, filter: Present("objectClass"), attrs: ["subschemaSubentry", "+"] }), ctrl: [] }
2025-07-08T17:15:11.072191440+00:00 DEBUG โโ ๐ [debug]: rootDSE request
2025-07-08T17:15:11.072335124+00:00 DEBUG โโ ๐ [debug]: | response: SearchResultEntry(LdapSearchResultEntry { dn: "", attributes: [LdapPartialAttribute { atype: "objectClass", vals: ["top"] }, LdapPartialAttribute { atype: "vendorName", vals: ["LLDAP"] }, LdapPartialAttribute { atype: "vendorVersion", vals: ["lldap_0.6.2-alpha"] }, LdapPartialAttribute { atype: "supportedLDAPVersion", vals: ["3"] }, LdapPartialAttribute { atype: "supportedExtension", vals: ["1.3.6.1.4.1.4203.1.11.1", "1.3.6.1.4.1.4203.1.11.3"] }, LdapPartialAttribute { atype: "supportedControl", vals: [] }, LdapPartialAttribute { atype: "supportedFeatures", vals: ["1.3.6.1.4.1.4203.1.5.1"] }, LdapPartialAttribute { atype: "defaultNamingContext", vals: ["dc=example,dc=eu"] }, LdapPartialAttribute { atype: "namingContexts", vals: ["dc=example,dc=eu"] }, LdapPartialAttribute { atype: "isGlobalCatalogReady", vals: ["false"] }] })
2025-07-08T17:15:11.072917173+00:00 DEBUG โโ ๐ [debug]: | response: SearchResultDone(LdapResult { code: Success, matcheddn: "", message: "", referral: [] })nitnelave
07/08/2025, 5:39 PMT0by
07/08/2025, 5:39 PMTroLL
07/08/2025, 8:48 PMSchema request vOvnitnelave
07/08/2025, 8:48 PMTroLL
07/08/2025, 8:50 PMTroLL
07/08/2025, 8:51 PMnitnelave
07/08/2025, 8:52 PMTroLL
07/08/2025, 8:52 PMldap_filter = (&(uid={0})(|(memberOf=cn=radicale,ou=groups,dc=example,dc=eu)(memberOf=cn=lldap_admin,ou=groups,dc=example,dc=eu)))
do we test and/or?nitnelave
07/08/2025, 8:53 PMTroLL
07/08/2025, 8:54 PMTroLL
07/08/2025, 8:58 PMT0by
07/08/2025, 9:58 PMT0by
07/08/2025, 10:00 PM